実装中のシナリオがあります。
見つかった一致キーワードの最後の項目のみを取得する
たとえば、多くのデータを含むデモ.txtというファイルがあります。
egrep -in '<NAME ="ABC_DEF_GHI">' /d/demo.txt
Line Number 11 : <NAME ="ABC_DEF_GHI">
Line Number 12 : <NAME ="ABC_DEF_GHI">
Line Number 34 : <NAME ="ABC_DEF_GHI">
Line Number 46 : <NAME ="ABC_DEF_GHI">
Line Number 67 : <NAME ="ABC_DEF_GHI">
Line Number 78 : <NAME ="ABC_DEF_GHI">
しかし、一致するキーワードの最後の項目を取得したいと思います。<NAME ="ABC_DEF_GHI">
出力は次のようになります。
Line Number 78 : <NAME ="ABC_DEF_GHI"> -> as its last occurrence
動作しない次のコードを試しました。
tail -f -n 1 /d/demo.txt | egrep -in '<NAME ="ABC_DEF_GHI">'
答え1
tail
次のことをしなさいgrep
egrep -in '<NAME ="ABC_DEF_GHI">' /d/demo.txt | tail -1
拡張正規表現ではなくリテラル文字列を検索するときfgrep
。egrep
fgrep -in '<NAME ="ABC_DEF_GHI">' /d/demo.txt | tail -1
答え2
ファイル全体が実行されないようにするには、grep
ファイルを逆にして最初の発生場所を取得します。
tac file | egrep -in -m1 'pattern'