shell sed 问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell sed 问题相关的知识,希望对你有一定的参考价值。

有一个文本
i love unix
执行 sed 's/[^unix]/#/g' 后为什么是这样的啊?
i######unix
那个前面的i为什么没有被替换掉呢?

[]这个字符组并不可以组成一个单词,而是匹配的单个字符。也就是i包含在unix字符里
所以i保留了下来。love并没有包含在unix这四个字符里,所以就被替换掉了
参考技术A [^unix]的意思是把不是u,n,i,x的字符替换,所以空格和love被换成#了。如果把^(这个是非的意思)去掉,那就是把字符u,n,i,x替换掉。sed 's/[unix]/#/g' 的结果就是
# love ####
参考技术B 因为i是unix中的一个字符
/[^unix]/的意思是匹配所有非u, n, i, x的字符

以上是关于shell sed 问题的主要内容,如果未能解决你的问题,请参考以下文章

shell sed 问题

linux shell sed命令的问题!

在 sed/shell 中转义 < 和 >

Sed用shell变量替换[重复]

使用 nix-shell 或 nix shell 在 Linux 64 上运行 MacOS sed

用于包装嘈杂的python脚本并使用sed删除特定行的shell命令问题[重复]