高度なsed印刷+交換[重複]

高度なsed印刷+交換[重複]

以下に掲示されたソリューションのためのよりエレガントなソリューションがあるかどうかに興味があります。

[]$ find ./abc -type f -exec sed -n 's/test/best/pg' {} + ; find ./abc -type f -exec sed -i 's/test/best/g' {} +

最初のfind sedコマンドは、見つかったすべてのパターンをコンソールに印刷します。 2番目のfind sedコマンドは実際にファイルのパターンを置き換えます。

私が経験した問題:

  1. sed -n -i(複数のコマンドライン修飾子/パラメータを持つことはできません) - ?確認された方ですか?

  2. sed置き換える前に結果を印刷するローカル修飾子はありません。 - ?解決策が見つかりません。解決策が存在し、コマンドが変更される可能性があります(つまり、次は何も出力せずに後ろから置き換えられます!)。

    find ./abc -type f -exec sed -i 's/test/best/pg' {} +  
    

ベストアンサー1

まあ、2つを別々に持つ必要はありません。find注文する:

find abc -type f -exec sed -n 's/test/best/pg' {} + -exec sed -i 's/test/best/g' {} +

./...そして以前のバージョンは必要ありませんabc

おすすめ記事