以下を使用してファイル内の複数の単語を置き換えようとしています。
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 -i
2回使用すると、次のような結果が得られます。
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
g
s
1行に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