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