У меня есть нижеприведенная запись (и много других подобных записей) в одном файле
9460 xyz abc (lmn):1027739543798. Taxpayer's identification number (INN): 123. For all IIB. 2016/02/03
Мне нужно произвести поиск по ключевому слову IIB. Если оно совпадает, то мне нужно взять всю эту запись и записать в другой файл.
Ниже приведен код, который уже существует. Этот код не работает. Проблема с этим кодом в том, что когда он берет полную совпадающую запись, он игнорирует текст, который идет после ":" и записывает его в другой файл.
cat keyword.cfg | while read KwdName
do
echo "KEYWORD:"${KwdName} //This prints IIB
grep "^${KwdName}\|${KwdName}\|~${KwdName}~\|:${KwdName}$\|:${KwdName}~" ${mainFileWithListOfRecords} | awk -F ":" '{print $1}' >> ${destinationFile}
done
Таким образом, вместо записи нижеприведенной записи в конечный файл
9460 xyz abc (lmn):1027739543798. Taxpayer's identification number (INN): 123. For all IIB. 2016/02/03
Он только пишет,
9460 xyz abc (lmn)
cat -vte mainFileWithListOfRecords
дает следующий результат
9460^IMEZHPROMBANK^I^ICJSC ;IIB;~ Moscow, (lmn): 1027739543798. Taxpayer's identification number (INN): 123. For all IIB. 2016/02/031#msid=s1448434872350^IC1^I2000/12/28^I2015/11/26^I^I$
Если все, что вам нужно сделать, это найти строку IIB
в каждой строке и скопировать строки, содержащие это слово, в новый файл, то следующее делает это:
grep -w IIB inputfile >outputfile
-w
заставит grep
искать полное слово IIB
(, а не IIIB
илиIIB2
).