我们如何匹配输入文本中的任何完整单词,然后将其替换为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
。