Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
以下のようなファイルがあります。foo の前のすべての行を削除したいのですが、bar の最後のインスタンスを 1 つだけ残します。入力:
bar1 foo bar1 bar2 bar3 foo bar5 bar6 bar7 foo
出力:
bar1 foo bar3 foo bar7 foo
誰かがこれを達成する方法を教えてください。sed を使用しようとしていますが、すべての試行で何も得られませんでした。
である必要がないことを願っていますsed。grepのオプションを使用-Bして、一致する行とその前の 1 行を出力します。
sed
grep
-B
grep -B 1 foo input > output
これはうまくいくかもしれません(GNU sed):
sed '$!N;/^bar.*\nfoo/!D' file