次のファイルから:
...
Pattern2:TheWrongBar
foo
Pattern2:TheRightBar
foo
First Pattern
foo
...
Pattern2
この条件の前に発生したこの条件の最後の発生を見つける必要があります。First Pattern
Pattern2:TheRightBar
私の最初の考えは、以前の残りのファイルをすべてインポートすることでしたFirst pattern
。
sed -e '/First Pattern/,$d' myfile | tac | grep -m1 "Pattern I need to get"
このコードを最適化する方法はありませんか?
ベストアンサー1
そしてawk
:
awk '/Pattern2/ {line=$0; next}; /First Pattern/ {print line; exit}' file.txt
/Pattern2/ {line=$0; next}
:パターンPattern2
が一致したら、その行を変数に保存しline
て次の行に移動します。/First Pattern/ {print line; exit}
:見つかったら、First Pattern
変数を印刷しline
て終了します。
例:
% cat file.txt
...
Pattern2:TheWrongBar
foo
Pattern2:TheRightBar
foo
First Pattern
foo
...
% awk '/Pattern2/ {line=$0; next}; /First Pattern/ {print line; exit}' file.txt
Pattern2:TheRightBar