我们如何匹配输入文本中的任何完整单词,然后将其替换为replaceString。
例如。我希望sed命令匹配输入文本中的任何单词,并将每个单词替换为“ XXX”。

echo "bar embarrassment recommended" | sed "Please fill right answer here"


我想要这样的输出

XXX XXX XXX


我是Linux新手。因此,在这种情况下,可能还有一些其他命令在此情况下效果最佳。

这个问题中单词的定义非常简单。它可以包含字母a-z或A-Z(下划线)。并且任何两个单词都由空格分隔。

例子

this is a sample text
This Is A Sample Text
this_ is_ a_ sample_ text_

最佳答案

matchew's helpful answer包含一个GNU sed解决方案,考虑到您的问题被标记为linux,这是合适的。

在注释中,您说您使用的是Mac(OS X),它带有BSD sed,它在许多方面都有不同的表现。

符合POSIX规范(因此跨平台)的matchew命令是:

echo "Bar Embarrassment Recommended." | sed 's/[[:alnum:]_]\{1,\}/XXX/g'


但是,请注意,这将匹配任何边界上的单词,而不仅仅是空白。即,一系列单词字符与任何非单词字符相邻将匹配,例如,abc-de将变成XXX-XXX

10-04 22:53
查看更多