Отображать строку в текстовом файле, если переменная соответствует части в строке?

Я делаю проверку акций. У меня есть файл со всеми биржами NYSE и их описаниями. Описания начинаются с первой вкладки ввода файла. Форматирование файла выглядит следующим образом:

A Agilent Technologies AA Alcoa Inc AA-B Alcoa Inc. AAC Aac Holdings Inc. AAN Aaron's Inc AAP Advance Auto Parts Inc AAT American Assets Trust AAV Advantage Oil & Gas Ltd AB Alliance Capital Management LP ABB Abb Ltd ABBV Abbvie Inc. Common Stock ABC Amerisourcebergen Corp ABEV Ambev SA ... 

Я хочу, чтобы это было, когда введен запас, он показывает описание запаса с ним, например (input stockchecker AB ):

Stock: AB (NYSE) - Alliance Capital Management LP

У меня также есть файл со всеми биржами NASDAQ.

Как проверить оба файла, чтобы увидеть, совпадает ли он с первым аргументом (введенный символ запаса), а затем отобразить описание? (Текстовые файлы называются NYSE.txt и NASDAQ.txt ) Код (если необходимо):

 #!/bin/bash stock=$1 touch info.txt # create info.txt if missing touch raw-info.txt # create raw-info.txt if missing echo $( wget http://www.google.com/finance/info?q=NASDAQ%3a$stock -q -O -) > raw-info.txt # get the information from Google Finance and write it to info.txt tr "\" ," "\n" < raw-info.txt > info.txt # split the information from Google Finance into separate lines ##########set stock variables############ stockID=$(sed '8q;d' < info.txt) # stockTicker=$(sed '16q;d' < info.txt) # stockCorp=$(sed '24q;d' < info.txt) # stockPrice=$(sed '48q;d' < info.txt) # lastUpdate=$(sed '73q;d' < info.txt) # priceChange=$(sed '90q;d' < info.txt) # percentChange=$(sed '106q;d' < info.txt) # previousClose=$(sed '130q;d' < info.txt) # ahPrice=$(sed '151q;d' < info.txt) # ahLUpdate=$(sed '162q;d' < info.txt) # ahPriceChange=$(sed '171q;d' < info.txt) # ahPctChange=$(sed '187q;d' < info.txt) # ######################################### #ah color formatting linecount=$(wc -l info.txt) linecount=${linecount#?} #remove tab character from wc -l linecount=${linecount%?????????} #remove info.txt from wc -l if [[ $linecount -gt 150 ]] ; then if [[ ${ahPriceChange:0:1} == "+" ]] ; then ahPriceChange=${ahPriceChange#?} ; ahPriceChange=$(printf "\e[32m+$ahPriceChange\e[0m") ; fi if [[ ${ahPriceChange:0:1} == "-" ]] ; then ahPriceChange=${ahPriceChange#?} ; ahPriceChange=$(printf "\e[31m-$ahPriceChange\e[0m") ; fi if [[ ${ahPctChange:0:1} != "-" ]] ; then ahPctChange=$(printf "\e[32m+$ahPctChange%%\e[0m") ; fi if [[ ${ahPctChange:0:1} == "-" ]] ; then ahPctChange=${ahPctChange#?} ; ahPctChange=$(printf "\e[31m-$ahPctChange%%\e[0m") ; fi ah_trades_present="yes" else ah_trades_present="no" fi #color formatting if [[ ${priceChange:0:1} == "+" ]] ; then priceChange=${priceChange#?} ; priceChange=$(printf "\e[32m+$priceChange\e[0m") ; fi if [[ ${priceChange:0:1} == "-" ]] ; then priceChange=${priceChange#?} ; priceChange=$(printf "\e[31m-$priceChange\e[0m") ; fi if [[ ${percentChange:0:1} != "-" ]] ; then percentChange=$(printf "\e[32m+$percentChange%%\e[0m") ; fi if [[ ${percentChange:0:1} == "-" ]] ; then percentChange=${percentChange#?} ; percentChange=$(printf "\e[31m-$percentChange%%\e[0m") ; fi if [[ $ah_trades_present == "no" ]] ; then echo "Google Finance ID: $stockID " echo "Stock $stockTicker ($stockCorp) " echo "Price $stockPrice " echo "Change: $priceChange [$percentChange] " echo "Previous Close: $previousClose " echo "Last Update: $lastUpdate " fi if [[ $ah_trades_present == "yes" ]] ; then echo "#################### AFTER HOURS ###################" echo "Google Finance ID: $stockID " echo "Stock $stockTicker ($stockCorp) " echo "Price: $ahPrice " echo "Change: $ahPriceChange [$ahPctChange] " echo "Last Update: $ahLUpdate " echo "Previous Close: $stockPrice " fi 

Вот одно решение –

  #!/bin/bash grep "^$1 " NYSE.txt NASDAQ.txt | sed 's/:/ /' | awk '{printf "Stock %s ( %s ) - ",$2,$1; for(i=3;i<NF;i++) printf "%s ",$i OFS;if(NF)printf"%s",$NF;printf ORS}' 

Первый grep ищет строку, начинающуюся с символа. Команда sed заменяет «:» после имени файла, чтобы получить выход в пустое пространство. Awk печатает предложение в желаемом порядке.