変数として入力された行の文字列を置き換える[重複]

変数として入力された行の文字列を置き換える[重複]

sedを使用してドキュメント行の文字列を置き換えたいです。どこ電話番号値は変数から出なければなりません。$var

私は試した:

sed '%ds/peer/md5/g' $var ./temp.txt

しかしそれは与える

sed: -e expression #1, char 1: unknown command: `%'

また試しました:

sed -e '"$var"s/peer/md5/g'-i ./temp.txt
sed: -e expression #1, char 1: unknown command: `"'

最後の試み:

printf '%ds/peer/md5/g;\n' 80 | sed -f - ./temp.txt

正しく印刷されますが、出力リダイレクト(>)または-iコマンドを使用して結果ファイルを保存することはできません。

答え1

私は正しい方法が次のようになることに気づきました。

sed "$var"'s/string1/string2/' -i ./temp.txt

どこ変わりやすいファイル行番号を持つ変数です。

答え2

  1. sed -i.bak "s/existing_string/$new_string/g" ./temp.txt
  2. sed -i.bak "s/$existing_string/new_string/g" ./temp.txt

ここに変数があります。$変数を使用するときに内部変数をsed使用する必要があることに注意してください。" "

このオプションは、-i.bakソースファイルのバックアップファイルを生成します。

関連情報