最後に一致するキーワードを取得するにはどうすればよいですか? Linux |

最後に一致するキーワードを取得するにはどうすればよいですか? Linux |

実装中のシナリオがあります。

見つかった一致キーワードの最後の項目のみを取得する

たとえば、多くのデータを含むデモ.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

拡張正規表現ではなくリテラル文字列を検索するときfgrepegrep

fgrep -in '<NAME ="ABC_DEF_GHI">' /d/demo.txt | tail -1

答え2

ファイル全体が実行されないようにするには、grepファイルを逆にして最初の発生場所を取得します。

tac file | egrep -in -m1 'pattern'

関連情報