次のsed
コマンドを使用して、ファイル内のテキストを置き換えます。
sed -i -e 's/noreply@\(.*\).example.com/[email protected]/' cron.yaml
ただし、ファイルのバックアップを作成しますcron.yaml
名前の下cron.yaml-e
。
移動しようとしました-i
最後まで:
sed -e 's/noreply@\(.*\).example.com/[email protected]/' -i cron.yaml
ただし、この場合、sed
はエラーを返します。
バックアップファイルの作成を回避するには、コマンドラインをどのように変更すればよいですか?
manページ によると、macOSでは長さゼロの拡張子を指定する必要があります
sed -i '' -e 's/noreply@\(.*\).example.com/[email protected]/'
Windowsでは、GNUWIN32 sedは、次のいずれかを置くと失敗します。
sed -i "s/WhatToFind/WhatToPut/g" ".\MyDir\*"
sed -i.BackUp "s/WhatToFind/WhatToPut/g" ".\MyDir\*"
バックアップは、sed$$$$$$
のファイル名パターンで実際のフォルダーに常に作成されます。この6つの$は、ランダムな文字と数字を表します。
BackUPをまったく作成せず、どのファイルがソースであるかを知ることができるBackUPを作成することも、ソースファイルと同じフォルダーにバックアップを作成することもできません。
また、sub-folders
の読み取りも試みます。この場合、impossible to read
のsub-folders
メッセージを示すコースのfiles
;そしてもちろん、サブフォルダーを再帰しません。同じフォルダー上のすべてでのみ機能しますが、サブフォルダー上のもの(再帰的ではない)では機能しません。
一言で言えば:-i
はまったく期待通りに動作していません。
私が使用しているGNUWIN32 sedバージョンは4.2.1であり、次からダウンロードされました。 http://gnuwin32.sourceforge.net/packages/sed.htm
Googleで、そのバグについて説明し、ssed
ツールではなくsed
をダウンロードすることを推奨するWebを見つけました。official
でないことを少し恐れています。 sed
の-i
バグについてGoogleで見つけたものへのリンク: http://www.thinkplexx.com/learn/snippet/cmd/one-liner/working-in -place-sed-option-under-windows