sed コマンドを使用した後、ファイルを保存します。

sed コマンドを使用した後、ファイルを保存します。

私のファイルを置き換えるには、次のコマンドを使用していますyyyymmddYYYYMMDDHH24MISS

sed -e 's/\('yyyymmdd'\)/\('YYYYMMDDHH24MISS'\)/g' filename

morePuTTYでコマンドを実行すると、代替値を含むファイルが表示されますが、そのファイルかどうかは反映されません。

試してみましたが、-i次のように表示されます。

sed: illegal option -- i

誰でも複数のファイルで特定のコードを置き換えて保存する方法を提案できますか?

答え1

この試み:

sed 's/yyyymmdd/YYYYMMDDHH24MISS/g' filename > changed.txt

または、同じファイル名を保持してください。

sed 's/yyyymmdd/YYYYMMDDHH24MISS/g' filename > changed.txt && mv changed.txt filename

答え2

あなたのsedコマンドは結果を標準出力にのみ送信します。後続のコマンドでそれをリダイレクトする必要があります(たとえば、同じコマンドではなくsed 'sedcommand' file > fileファイルが処理される前に削除されるため)。

ed代わりに、次のコマンドを使用してコマンドをパイプすることもできますsed

for file in $filelist ; do
  echo -e '%s/yyyymmdd/YYYYMMDDHH24MISS/g\nw' | ed $file
done

各行()を置き換えてから%、改行(\n)の後に変更されたファイルをその場所(w)に書き込みます。

答え3

コマンドで-iオプションを使用してくださいsed

sed -ie 's/\('yyyymmdd'\)/\('YYYYMMDDHH24MISS'\)/g' filename

関連情報