Fooを置き換える方法fooを使用し、sedを単に実行する
sed 's/foo./foo_/g' file.php
動作しません。ありがとう!
.
をエスケープします:
sed 's/foo\./foo_/g' file.php
例:
~$ cat test.txt
foo.bar
~$ sed 's/foo\./foo_/g' test.txt
foo_bar
興味深いことに、ドットのみを検索して置換する場合は、文字セットにドットを配置する必要があります。何らかの理由でsedコマンドでドットだけをエスケープしても機能しません。ドットはまだ1文字のワイルドカードに展開されます。
$ bash --version # Ubuntu Lucid (10.04)
GNU bash、バージョン4.1.5(1)-release(x86_64-pc-linux-gnu)
$ echo aa.bb.cc | sed s/\./-/g # replaces all characters with dash
'--------'
$ echo aa.bb.cc | sed s/[.]/-/g # replaces the dots with a dash
aa-bb-cc
検索に先頭の文字を追加すると、エスケープが機能します。
$ echo foo. | sed s/foo\./foo_/g # works
foo_
もちろん、文字セットにドットを入れることもできます。
$ echo foo. | sed s/foo[.]/foo_/g # also works
foo_
-ポール
\でドットをエスケープします
sed 's/foo\./foo_/g' file.php
/と\の組み合わせがわかりにくい場合は、別の「区切り文字」を使用できます
sed 's#foo\.#foo_#g
Sの後の2番目の文字は何でもよく、sedはその文字をセパレータとして使用します。
ドットをエスケープする必要があります-エスケープされていないドットは、fooの後のすべての文字に一致します。
sed 's/foo\./foo_/g'
自分のために、 sed 's/foo\./foo_/g'
取り組んでいます。しかし、あなたも試すことができます:
sed -e 's/foo\./foo_/g'
そして
sed -e "s/foo\\./foo_/g"
そして
sed 's/foo[.]/foo_/g'