GNU/Linux >> Linux の 問題 >  >> Linux

-i オプションを指定した sed コマンドは Mac では失敗するが、Linux では機能する

-i を使用する場合、OS X ではバックアップ ファイルの拡張子が必要です .試してみてください:

sed -i .bak 's/hello/gbye/g' *

GNU sed の使用 拡張子はオプションです .


-i を使用する場合 バックアップの拡張機能を提供する必要があります。

お持ちの場合:

File1.txt
File2.cfg

コマンド (-i の間にスペースがないことに注意してください) そして '' そして -e 新しいバージョンの Mac と GNU で動作するようにします):

sed -i'.original' -e 's/old_link/new_link/g' *

次のような 2 つのバックアップ ファイルを作成します:

File1.txt.original
File2.cfg.original

すべてのケースで機能する sed コマンドの組み合わせを見つけることは不可能であるため、バックアップ ファイルの作成を回避する移植可能な方法はありません:

  • sed -i -e ... - -e を作成するため、OS X では動作しません バックアップ
  • sed -i'' -e ... - OS X 10.6 では動作しませんが、10.9 以降では動作します
  • sed -i '' -e ... - GNU では動作しません

注意 すべてのプラットフォームで動作する sed コマンドがない場合、別のコマンドを使用して同じ結果を得ることができます。

例:perl -i -pe's/old_link/new_link/g' *


Linux
  1. スマートクォートをLinuxsedコマンドに置き換えます

  2. 例を含むLinuxTeeコマンド

  3. LinuxでのJQコマンドと例

  1. LinuxでSedコマンドを使用する方法と例

  2. 例を含むLinuxヘッドコマンド

  3. mv のような Linux コマンドはありますが、正規表現はありますか?

  1. 例を含むwcLinuxコマンド

  2. Linuxのソートコマンドと例

  3. Linuxでのエコーコマンド(例付き)