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見つけます。IIBIIIBIIB2

関連情報