無効なsedコマンドが実行されました。すべてのソースコードファイルが混乱しています。

無効なsedコマンドが実行されました。すべてのソースコードファイルが混乱しています。

基本的に私はこれを実行しました。

sed -i '/s/icap_infos/icap_servers/g' *

代わりに:

sed -i 's/icap_infos/icap_servers/g' *

コマンドで「s」の前にスラッシュがあることを確認してください。

今私のすべてのソースファイルには、ファイル全体に奇妙なテキスト文字列が散在しています。どうすれば解決できますか?

答え1

/s/文字を含むすべての行に一致する正規表現アドレスs。 GNU sedでitext標準拡張

i\
text

それtext指定された行の後に挿入します。したがって、コマンドはcap_infos/icap_servers/gすべてs

元のファイルにそのようなファイルがないと仮定すると、次のものを使用できます。

sed -i.old '\:^cap_infos/icap_servers/g$:d' *

到着Dエレテラインがcap_infos/icap_servers/g正確に一致します。パターン自体にデフォルトの区切り文字が含まれているため、:代替区切り記号(で導入)を使用することに注意してください。現在のファイルが機能していないために他のものを試す必要がある場合に備えて、サフィックスを付けてバックアップされます。\:/.old

将来的には、sedコマンドをドライに実行する習慣を身につけてください。いいえ -iまず、バックアップを作成して/または-i.bak通常の代わりに使用してください-i

答え2

はアドレスとして解釈されるため、/s/次のコマンドはインクルードにのみ適用されますs。次のコマンドは、i次のテキストを挿入しますcap_infos/icap_servers/g

する必要がある3つ:

  1. cap_infos/icap_servers/g意図的に行のみを含めた可能性はほとんどないため、sed '/^cap_infos\/icap_servers\/g$/d'次を使用して行を削除できます。住所何かを削除してくださいd
  2. 予想される変化を生み出す
  3. -i後でオプションを使用する前に、常に変更を確認する方法を学びます。

関連情報