誤ってsedコマンドを実行しましたが、「s」の不明なオプションは置換が行われなかったことを意味しますか


1

私は誤ってsedコマンドを実行しました:

find ./ -type f -exec sed -i 's/http:\/\/i.po.st\/static\/v3\/img\/set-24.png/https:\/\/i.po.st\/static/v3/img/set-24.png/gI' {} \;

脱出が完了する前に /

エラーが発生しました:

sed: -e expression #1, char 75: unknown option to `s'
sed: -e expression #1, char 75: unknown option to `s'

変な置換は起こらなかった?

linux  bash  sed 

あなたは何かが起こったかどうかを比較できるようにする前にバックアップを取っていなかったということですか?
オリバーフリードリッヒ

2
ちなみに、別の区切り文字を使用できるため、それほどエスケープする必要はありません。😄's|http://blah|http://bleh|gi'
ダニエルB

@OliverFriedrich私は実際に持っていますが、以前に2つの大きなsedを実行したことがあり、現在は差分が大きすぎて何が起こったのか理解できません。-Iフラグを使用して他の差分を無視しようとしました。

ええと、bashの履歴にはSEDがあります...いつでもやり直すことができます
オリバーフリードリッヒ

回答:


2

postet cmdlineから、コマンドが正しくなかったため、置換が発生しなかったことをお勧めします。

とにかく、最初に「-i」スイッチを無効にして結果を確認するか、前にファイルのバックアップを取ることをお勧めします。


3
または使用-i'.bak'できるようにsedバックアップファイルを作成する
mhutter

0

何も変更されていないことに同意します。

char 75あなたのエラーメッセージに印刷された文字列が原因と置換文字列の障害を指し、sed何らかの変更を加える前に終了します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.