当存在点和下划线时使用 sed 搜索和替换
- 2024-11-13 08:36:00
- admin 原创
- 24
问题描述:
我如何用 sed 替换,foo.
只需foo_
运行
sed 's/foo./foo_/g' file.php
不起作用。
解决方案 1:
逃离.
:
sed 's/foo./foo_/g' file.php
例子:
~$ cat test.txt
foo.bar
~$ sed 's/foo./foo_/g' test.txt
foo_bar
解决方案 2:
有趣的是,如果您只想搜索和替换点,则必须将点放在字符集中。出于某种原因,在 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
# --------
用破折号代替点:
echo aa.bb.cc | sed s/[.]/-/g
# aa-bb-cc
随着搜索中主角的加入,逃脱成功了。
echo foo. | sed s/foo./foo_/g # works
# foo_
当然,在字符集中放置点也是可行的。
echo foo. | sed s/foo[.]/foo_/g # also works
# foo_
解决方案 3:
使用 \ 转义点
sed 's/foo./foo_/g' file.php
如果你发现 / 和 \ 的组合令人困惑,你可以使用另一个“分隔符”
sed 's#foo.#foo_#g
s 后面的第二个字符可以是任何字符,并且 sed 将使用该字符作为分隔符。
解决方案 4:
您需要对点进行转义 - 未转义的点将匹配 foo 之后的任何字符。
sed 's/foo./foo_/g'
解决方案 5:
对于我来说,sed 's/foo./foo_/g'
这是可行的。但你也可以尝试:
sed -e 's/foo./foo_/g'
和
sed -e "s/foo\\./foo_/g"
和
sed 's/foo[.]/foo_/g'
相关推荐
热门文章
项目管理软件有哪些?
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件
热门标签
云禅道AD