
次のような内容のテキスト ファイルがあるとします。
foo
bar
whatever
something I don't know
bar2
whatever
grep whatever myfile.txt
そして、 (および/またはsed
および/または)を実行した結果の出力としてawk
、次のものが欲しいです。
foo
something I don't know
オプションを使用しようとしましたが、と-B 2
の両方が出力されます。さまざまなレコードが多数あるため、 実行できません。foo
bar
... | grep -v bar
答え1
grep ではありませんが、動作するはずです:
awk '/grep_string/ {print a} {a=b;b=$0}' ファイル
答え2
方法が見つからなかったので、私の解決策は次のとおりです。
コンテンツのブロックが返されたので、次のように言います。
foo
bar
whatever
--
foo2
bar2
whatever
--
など、grep の区切り文字を使用して、次の行を次のように取得し、削除しました。
grep -B2 whatever myfile.txt | grep -v whatever | grep -A 1 -E '\-\-' | grep -v -E '\-\-'
そして、出力は次のようになります:
foo
foo2