egrep は、文字列と改行文字を指定するために使用されます。

egrep は、文字列と改行文字を指定するために使用されます。

事前に指定された文字列のリストを受け取ります。複数のテキストファイル(以下の例)で、リスト内の文字列の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):|^\$"

これにより、入力の空行が拒否されます。

おすすめ記事