私のファイルを置き換えるには、次のコマンドを使用していますyyyymmdd
。YYYYMMDDHH24MISS
sed -e 's/\('yyyymmdd'\)/\('YYYYMMDDHH24MISS'\)/g' filename
more
PuTTYでコマンドを実行すると、代替値を含むファイルが表示されますが、そのファイルかどうかは反映されません。
試してみましたが、-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