【发布时间】:2015-05-14 15:02:38
【问题描述】:
我们如何匹配输入文本中的any整个单词,然后将其替换为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_
【问题讨论】:
-
sed "s/please_fill_your_regexp_here/XXX/g" -
到目前为止的所有答案都假设跨行的连字符应被视为两个单词。在 sed 中识别特殊情况并区别对待是非常困难的,而且可能没有必要。但是你应该知道这个假设。
-
在您的上下文中,
word是什么?17是一个词吗?that's是一个字还是两个字?as-is怎么样?单词总是用空格分隔吗?非单词字符应该保持原样还是删除或替换为空格?您是否关心保留单词之间的空白?编辑您的问题以定义word并包含一些您认为脚本难以正确处理的多字示例输入行和相关输出。 -
我从您发布的示例中看到,您的输入由一系列被双引号包围的字母/下划线/空格组成(它们本身又被空白字符与其他双引号字符串分开)并且完全包含在一个线。好的,我知道了。现在预期的输出是什么样的?它是否保持在一条线上?双引号是保留还是删除?请编辑您的问题以准确显示与该输入相关的输出,以便我们可以根据您发布的示例输入测试我们可能的解决方案。