Unix scripting : Writing to another file with ":" is failing

У меня есть нижеприведенная запись (и много других подобных записей) в одном файле

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$
0
03.02.2016, 11:38
1 ответ

Если все, что вам нужно сделать, это найти строку IIBв каждой строке и скопировать строки, содержащие это слово, в новый файл, то следующее делает это:

grep -w IIB inputfile >outputfile

-wзаставит grepискать полное слово IIB(, а не IIIBилиIIB2).

0
28.01.2020, 04:53

Теги

Похожие вопросы