当存在点和下划线时,搜索并替换为sed

问题描述

| 如何替换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命令中仅转义点是无效的。点仍扩展为单个字符通配符。
$ bash --version  # Ubuntu Lucid (10.04)
GNU bash版本4.1.5(1)-发行(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之后的第二个字符可以是任何字符,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\'
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...