Linux 当出现点和下划线时,搜索并替换为sed
如何替换foo。使用foo_uuu和sed简单运行Linux 当出现点和下划线时,搜索并替换为sed,linux,command-line,sed,Linux,Command Line,Sed,如何替换foo。使用foo_uuu和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 您需要转义点-未转义点将匹配foo之后的任何字符 sed 's/foo\./foo_/g' 用一根绳子把圆点逃脱\ sed 's/foo\./foo_/g
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
您需要转义点-未转义点将匹配foo之后的任何字符
sed 's/foo\./foo_/g'
用一根绳子把圆点逃脱\
sed 's/foo\./foo_/g' file.php
如果发现/和\的组合令人困惑,可以使用另一个“分隔符”字符
sed 's#foo\.#foo_#g
s后面的第二个字符可以是任意字符,sed将使用该字符作为分隔符。有趣的是,如果您只想搜索并替换点,则必须将点放入字符集中。由于某种原因,在sed命令中仅转义点是行不通的。点仍然扩展为单个字符通配符
$ bash --version # Ubuntu Lucid (10.04)
GNUBash,版本4.1.5(1)-发行版(x86_64-pc-linux-GNU)
“----------”
aa bb cc
随着搜索中主角的加入,转义程序开始工作
$ echo foo. | sed s/foo\./foo_/g # works
福_
当然,将点放在字符集中也是有效的
$ echo foo. | sed s/foo[.]/foo_/g # also works
福_
--
保罗对于我自己来说,
sed's/foo\/foo\ug'
正在工作。但您也可以尝试:
sed -e 's/foo\./foo_/g'
及
及
谢谢我不需要对“foo”中的“”进行转义。请查看“正则表达式”部分的手册页,以了解您可以在表达式的左侧和右侧使用什么。另外,请看一下POSIX.2正则表达式的解释。
sed不熟悉,但在第二个示例中,最后一个/
确实是必需的,哪里使用了#
作为分隔符?@binaryLV:谢谢-不需要它。你能给我们看一下file.php
中的一些行吗?替换不能正常工作?你试图用shell来转义点,所以sed将其视为“任何字符”。尝试echo foo8 | sed s/foo\/foo\ug
,您仍然会得到foo
。为了防止shell逃逸,请使用引号:echo aa.bb.cc | sed's/\./-/g'
将给出aa-bb-cc
;
$ echo foo. | sed s/foo[.]/foo_/g # also works
sed -e 's/foo\./foo_/g'
sed -e "s/foo\\./foo_/g"
sed 's/foo[.]/foo_/g'