事前に指定された文字列のリストを受け取ります。複数のテキストファイル(以下の例)で、リスト内の文字列の1つで始まらない文字列を検索したいと思います。場合によっては、テキストファイルに空のリンクが表示されることがあります。私のコードではそのリンクを見つけましたが、私も望んでいません。
これまで私のスクリプトは次のようになりました。
# The list of strings I receive
ENTRY_LIST="ACK AFF AUTH CON DIS EDITOR FUND JEL MISC PHD REF SEM TITLE VIS"
# I transform blanks to | in order to use egrep on in
TRANSFORMED_ENTRY_LIST=${ENTRY_LIST// /\|}
egrep -rvn ^"($TRANSFORMED_ENTRY_LIST):"
サンプルデータは次のとおりです。
TITLE: xxxx
AUTH: yyy
FUND: ZZZ
TITLE: BERLIN
AUTH: STUTTGART
AFF: WIEN
ACK: KIEL
CNO: HAMBURG
SEM: BRESLAU
FUND: DANZIG
その行CNO: HAMBURG
は間違っていますが、私のコードには4行も表示されます。
答え1
|^$
正規表現の末尾に以下を追加してください。
egrep -rvn "^($TRANSFORMED_ENTRY_LIST):|^\$"
これにより、入力の空行が拒否されます。