foo
ファイルがまたはを含む複数行に複雑になりましたbar
。すべて削除して最後に1行追加します。
だから与えられたファイル
some stuff
foo1
foo2
bar=42
some other stuff
bar
foo
more stuff
sedスクリプトを返す必要があります。
some stuff
some other stuff
more stuff
foo
bar
sedを試してみましたが、最後の行に両方が'/foo/d;/bar/d;$s/$/\nfoo\nbar/'
含まれておらず、ファイルが空でない限り機能します。foo
bar
foo
最後の行でも機能させるにはどうすればよいですか?スクリプト全体がこれ以上の作業を行う必要があるので、私はsedを使い続けたいと思います。もちろん、スクリプトの後にechoを含む行を追加することもできますが、オールインワンソリューションがないかどうか疑問に思います。
編集する:空のファイルボックスは処理する必要はありません。
ベストアンサー1
2番目の条件を追加する必要があります。最後の行でない場合にのみ削除し、a
一致後に行を削除するには、置換の代わりに最後の行に保留を使用します。
sed -E '/foo|bar/{$!d
}
${a\
foo\
bar
//d
}' infile