Unix 脚本:使用“:”写入另一个文件失败

Unix 脚本:使用“:”写入另一个文件失败

我在一个文件中有以下记录(以及许多其他此类记录)

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$

答案1

如果您需要做的只是在每一行中查找字符串IIB并将包含该单词的行复制到新文件中,则可以执行以下操作:

grep -w IIB inputfile >outputfile

将会-w强制grep寻找完整的单词IIB(而不是IIIBor IIB2)。

相关内容