を使用して-A
周囲の線を表示できることを知っていますが、どちらも一致する線も表示します。このサンプルファイルで私がやりたいことは次のとおりです。-B
-C
foo
bar
私はこのようなことをし、grep <option> "bar" file
私の結果は次のようになります
foo
サイドノートgrep
:他の人と一緒に使う方法や使い方を知っていますが、sed
一度だけ使いたいです。grep
答え1
これは次の人にとってはかなり難しいことですsed
。
$ printf 'foo\nbar\n' | sed -n '$!N;/\nbar$/P;D'
foo
答え2
別のソリューション
grep -B 1 "bar" test | head -n 1
追加の正規表現や一致テストが不要なため、より効率的であるという利点がありますが、複数の一致では機能しません。
答え3
別の考えられる解決策:
grep -B 1 "bar" test | sed '/bar/d'
答え4
「bar」を無視する別のgrepを実行できます。
grep -B 1 "bar" test.txt | grep -v "bar"