grepでsedストリームを分解するか、sedにgrepを作成しますか?

grepでsedストリームを分解するか、sedにgrepを作成しますか?

次のファイルがあります。

file.foo
file2.foo
file.bar
file3.foo

これで終わる行だけを返したいのですが、withを含む.fooすべての項目の名前を変更したいと思います。この場合は完全にスキップすることを意味します。私は何をすべきですか?fileblagfile.barただsedを使う?私が現在やっていることは基本的に次のとおりです。

grep '\.foo$' input | sed -e's/file/blag/'

しかし、grepを削除したいと思います。

この質問は、この回答のために行ったパイプラインに大まかに基づいています。

ベストアンサー1

または、ミラーリングし、デフォルトの印刷をオフにし、置き換え、目的の行だけを印刷します。

sed -n  's/file/blag/; /\.foo$/p' < input

または、目的の行をフィルタリングします。最初、交換して印刷します。

sed -n '/\.foo$/ { s/file/blag/; p }' < input

おすすめ記事