複数の式を内部パラメータとして使用するsed

複数の式を内部パラメータとして使用するsed

以下を使用してファイル内の複数の単語を置き換えようとしています。

sed -i #expression1 #expression2

文書

Something  123 item1
Something  456 item2
Something  768 item3
Something  353 item4

出力(必須)

anything  123 stuff1
anything  456 stuff2
anything  768 stuff3
anything  353 stuff4

試してみてください

sed -i2回使用すると、次のような結果が得られます。

 sed -i 's/Some/any/g' file
 sed -i 's/item/stuff/g' file

次の単一の内部コマンドでこれを行う方法はありますか?

sed -i 's/Some/any/g' -i 's/item/stuff/g' file

上記のコードを試してみると、s/item/stuff/gファイルをインポートして処理しようとします。

ベストアンサー1

システムのバージョンに応じて、sed次のことができます。

sed -i 's/Some/any/; s/item/stuff/' file

gs1行に1回だけ置き換えるので、ここのコマンドの最後のスラッシュは必要ありません。

または:

sed -i -e 's/Some/any/' -e 's/item/stuff/' file

または:

sed -i '
  s/Some/any/
  s/item/stuff/' file

この-iオプション(GNU拡張は他のいくつかの実装でサポートされていますが、一部は-i ''置換が必要です)sedの直後に文字がある場合は、ファイルを編集して元のファイルをバックアップしてから、-iそのsed文字を拡張子として使用するように指示します。バックアップファイルの。例えば、

sed -i.bak 's/Some/any/; s/item/stuff/' file

または

sed -i'.bak' 's/Some/any/; s/item/stuff/' file

修正fileとオリジナルをfile.bak

もちろん、Unix(またはUnixファミリー)システムでは通常、「.bak」の代わりに「~」を使用しているため、

sed -i~ 's/Some/any/;s/item/stuff/' file

おすすめ記事