web-dev-qa-db-ja.com

バックアップファイルなしのSED

次の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はエラーを返します。

バックアップファイルの作成を回避するには、コマンドラインをどのように変更すればよいですか?

37
LA_

manページ によると、macOSでは長さゼロの拡張子を指定する必要があります

sed -i '' -e 's/noreply@\(.*\).example.com/[email protected]/' 
68
Marco de Jongh

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 readsub-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

2
Anonymous