0

以下のようなファイルがあります。foo の前のすべての行を削除したいのですが、bar の最後のインスタンスを 1 つだけ残します。入力:

bar1
foo
bar1
bar2
bar3
foo
bar5
bar6
bar7
foo

出力:

bar1
foo
bar3
foo
bar7
foo

誰かがこれを達成する方法を教えてください。sed を使用しようとしていますが、すべての試行で何も得られませんでした。

4

3 に答える 3

6

である必要がないことを願っていますsedgrepのオプションを使用-Bして、一致する行とその前の 1 行を出力します。

grep -B 1 foo input > output
于 2013-11-08T07:01:41.757 に答える
0

これはうまくいくかもしれません(GNU sed):

sed '$!N;/^bar.*\nfoo/!D'  file
于 2013-11-08T15:01:24.987 に答える