ファイルには次の履歴があります(および他の多くの履歴)。
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
IIIB
IIB2