为什么正则表达式与 sed 命令的输入不匹配

为什么正则表达式与 sed 命令的输入不匹配

我想从“ps aux”输出中删除多余的空格,并将其替换为一个空格。我所做的是:

ps axu | sed 's/[ ]+/ /g'

但输出似乎没有变化,我在标记之间仍然有太多空格。

username    4876 ... <the rest of columns ommitted>

为什么这个正则表达式不匹配用户名和 pid 之间的空格?

答案1

因为sed使用基本正则表达式 (BRE),并且+不是其中的一部分。使用s/ */ /(模式部分中的两个空格),或-E用于 GNU 或 BSD 中的扩展正则表达式sedsed -E 's/ +/ /g'

相关内容