web-dev-qa-db-ja.com

sedがすべての出現を置き換えないのはなぜですか?

このコードをbashで実行すると:

echo dog dog dos | sed -r 's:dog:log:'

出力が得られます:

log dog dos

すべての犬の出現を置き換えるにはどうすればよいですか?

101
niagr

Sedがパターンバッファーの内容のglobal置換を実行するように、g修飾子を追加する必要があります。

echo dog dog dos | sed -e 's:dog:log:g'

Sedに関する素晴らしいドキュメントについては、 http://www.grymoire.com/Unix/Sed.html を確認してください。このglobalフラグはここで説明されています: http://www.grymoire.com/Unix/Sed.html#uh-6 =

GNU sedの公式ドキュメントは http://www.gnu.org/software/sed/manual/ で入手できます。

163
Bruno Reis

最後にgを追加する必要があります。これは「グローバル」の略です。

echo dog dog dos | sed -r 's:dog:log:g'
                                     ^
22
alestanis