私はbashでこのコードを実行した場合:なぜsedはすべてのオカレンスを置き換えないのですか?
echo dog dog dos | sed -r 's:dog:log:'
それが与える出力:
log dog dos
は、どのように私はそれが犬の出現をすべて置き換えることができますか?
私はbashでこのコードを実行した場合:なぜsedはすべてのオカレンスを置き換えないのですか?
echo dog dog dos | sed -r 's:dog:log:'
それが与える出力:
log dog dos
は、どのように私はそれが犬の出現をすべて置き換えることができますか?
SEDはパターンバッファの内容のグローバル置換を実行するようにあなたがg
修飾子を追加する必要があります:
echo dog dog dos | sed -e 's:dog:log:g'
sedの素晴らしいドキュメントについては、http://www.grymoire.com/Unix/Sed.htmlをチェックしてください。このグローバルフラグがここで説明されていますhttp://www.grymoire.com/Unix/Sed.html#uh-6
GNU sed
のための公式ドキュメントは、あなたがグローバル置換のための `G`フラグが必要http://www.gnu.org/software/sed/manual/
ありがとう、それは働いた:) – niagr
あなたが最後にg
を配置する必要があり、それは「グローバル」の略:
echo dog dog dos | sed -r 's:dog:log:g'
^
存在しないsed -rの代わりにsed -eを使用する必要があります。 –
@DylanDaniels Ubuntuの 'man sed'によれば' -r'オプションは "拡張正規表現を使う"を意味します。したがって、指定されたコマンドは正常に機能しますが、拡張正規表現の機能は必要ありません。 –
で利用可能である、あなたはどちらか、ここで' -r'オプションは必要ありません。 。 –