sedコマンドを使用して、macOSで一致する行を置き換えます
Use Sed Command Replace Matching Lines Under Macos
たとえば、test.txt
ファイル内1
先頭の行は「aa / bb」に置き換えられます
コマンドを使用する sed -i '.bak' 's/1.*/aa/bb/' test.txt
どこ:
-i '.bak'
ファイルを直接操作して追加する.bak
バックアップファイルの名前として、-i ''
を使用します/s
「置換」の略、つまり置換1.*
で表される1
先頭のすべての文字列.*
正規表現ですべての文字を表すaa/bb
エスケープ文字表現を使用するaa/bb
。- 最後に区切り文字が必要であることに注意してください
/
そうでない場合は、プロンプトが表示されますunterminated substitute in regular expression
- 区切り文字も使用できます
|
この場合、特殊記号は文字をエスケープする必要がなく、コマンドは次のようになります。sed -i '.bak' 's|1.*|aa/bb|' test.txt
- ファイル内の複数の同一の文字列を置き換える必要がある場合は、グローバルパラメータ
g
を追加する必要があります。これは次のとおりです。sed -i '.bak' 's/1.*/aa/bb/g' test.txt
またはsed -i '.bak' 's|1.*|aa/bb|g' test.txt
場合:
#cat test.txt root@xxxxx#$%^&*097qwert 2asdf 3jkl #sed -i '.bak' 's/1.*/aa/bb/' test.txt #cat test.txt aa/bb 2asdf 3jkl