如何在输入文本中匹配任何整个单词,然后将其替换为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_
答案 0 :(得分:2)
编辑:
echo "Bar Embarrassment Recommended." | sed -r 's/\w+/XXX/g'
是你所追求的。在我最初阅读你的问题时,你需要简单地将一个完整的单词转换成3个X。
答案 1 :(得分:1)
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
,例如。
答案 2 :(得分:0)
您可以使用awk
。它用xxx
echo "bar embarrassment recommended" | awk '{for (i=1;i<NF;i++) printf "xxx ";print "xxx"}' file
xxx xxx xxx
答案 3 :(得分:-1)
你可以像这样用词边界匹配任何整个单词:
echo "bar embarrassment recommended" | sed 's/\b\S\+\b/XXX/g'