おはようございます、
私は複数の繰り返しパターンがあり、その後に私が見つけたいパターンがあるファイルのUNIXスクリプトを書こうとしています。この質問は次のようによく似ています。
」他のパターンの前に最後に表示されるパターンを取得します。しかし、「tac」(または「tail -r」)がなく、String2とString2の前の最後のString1を返そうとします。
出力:
...
Condition 1: A
foo
Condition 1: B
foo
Condition 2: C
foo
Condition 1: D
foo
Condition 1: E
foo
Condition 2: F
...
次を返すgrep / sed / awkスクリプトを作成したいと思います。
Condition 1: B
Condition 2: C
Condition 1: E
Condition 2: F
条件1は常に条件2の上の「x」行なので、次のようにしてみました。
grep -B x "Condition 2"
そこで何らかの理由で結果スクリプト出力の2番目の発生が一番上で数行で停止するため(条件1は表示されません)、条件1/2の理由の間に空白行がある可能性があるため、わかりません。だからgrep -Bの使用を放棄しました。私は「戻る」grepできるので、tacが役に立つと思いましたが、私の環境にはtacコマンド(またはtail -r)はありません。
誰でも提案があれば大変感謝します。お時間をいただきありがとうございます。
ベストアンサー1
まあ、うまくgrep
いかない場合は動作するawk
かどうかはわかりませんが、次のことを試すことができます。
awk '/Condition 1/ { acc = $0; } /Condition 2/ { print acc; print; }' input