Unix命令
回答
要与SED不支持PCRE字边界扩展版本兼容,你需要效仿该扩展自己的影响:
sed -r '[email protected](^|[^[:alpha:]])old($|[^[:alpha:]])@\1new\[email protected]'
使用\b
:
's/\bold\b/new/g'
我通常坚持perl:
perl -pi -e 's/\bold\b/new/g' file.txt
''b' *只*保证为perl工作;它不受POSIX标准sed支持。因此,这不是平常习惯的问题,而是任何想要使用这个答案的人的必要性,并且有理由相信它会起作用。 – 2013-04-25 00:28:31
OP没有进行就地更换。在你的Perl命令行中使用'-i'使得它非常相当危险。 – 2013-04-25 02:26:32
如果不挑剔,双方插入空白将为你工作。
sed 's/ old/new /g' file.txt
在字符串的开头或结尾不起作用。不适用于任何其他形式的空白。不适用于其他字词终止字符。这是一大堆“不挑剔”。 – 2013-04-25 04:32:28
\ <...\> - 标记单词边界,上面的一个应该是正确的。 – XuZhangning 2013-04-25 06:30:36
这对于GNU sed是正确的,但不是由POSIX指定的。 (http://pubs.opengroup.org/onlinepubs/009695399/utilities/sed.html) – 2013-04-25 11:43:37
这可能会为你工作:
sed 's/\<old\>/new/g' file
顺便说一句,如果你想的相反(使用GNU SED):
sed 's/\Bold\B/new/g' file
第一种形式也是非POSIX(但支持GNU sed等)。 – 2013-04-25 16:24:31
- 1. Unix命令
- 2. Unix grep命令
- 3. Unix命令
- 4. Unix dot命令
- 5. unix find命令
- 6. tee命令UNIX
- 7. SSH UNIX命令
- 8. Unix strace命令
- 9. unix bash命令
- 10. unzip unix命令
- 11. 狗命令UNIX
- 12. UNIX grep命令
- 13. Unix命令错误
- 14. 查找命令unix
- 15. Unix Shell - Zip命令
- 16. unix的mail命令
- 17. 管道unix命令
- 18. SED命令在UNIX
- 19. Unix搜索命令
- 20. AIX(vs)Unix命令
- 21. UNIX diff命令usuage
- 22. UNIX导出命令
- 23. 使用UNIX命令
- 24. Unix命令解释
- 25. 的Unix grep命令
- 26. Unix的sed命令
- 27. UNIX tty命令和文件命令?
- 28. UNIX命令“找不到命令”错误
- 29. 将Unix命令转换为Windows命令
- 30. 蟒蛇equivallent命令日期UNIX命令
我不知道'[[:空间:] ]'应该是'[^ [:alpha:]]'或'[^ [:alnum:]]'?应该允许标点符号和空格作为分隔符。尽管如此,这是一个可靠的,尽管冗长的方法。 – 2013-04-25 00:46:57
@JonathanLeffler良好的呼唤;采纳。 – 2013-04-25 01:01:16