標準入力をsedに置き換える方法

標準入力をsedに置き換える方法

別のディレクトリにあるファイルのパスワードフィールドを置き換える必要があります(検索と置換)。すべてのフィールドの形式は次のとおりです。field = value

私が試したことは次のとおりです。

grep -i  fieldofinterest /etc/filemod*/*| sed  's/[=].*$/ = myvalue/'

これはうまくいきますが、作成しようとすると入力ファイルが提供されていないというエラーが発生します。

この交換作業を実行するにはどうすればよいですか?

答え1

即興:

grep -l fieldofinterest /etc/filemod*/* | while read filename; do
  sed 's/fieldofinterest.*/fieldofinterest = myvalue/' "$filename" > tmp && mv tmp "$filename"
done

grep -l以下を含むファイル名を収集します。関心分野while置換のために一時ファイルを介してループに渡します。sedsedにある場合は、次-iのように単純化できます。

grep -l fieldofinterest /etc/filemod*/* | while read filename; do
  sed -i 's/fieldofinterest.*/fieldofinterest = myvalue/' "$filename" 
done

関連情報