下面的语法应该与"Ambari运行“匹配,但是在单词之间有多个空格的情况下如何匹配呢?如何忽略单词之间的空格?
echo "Ambari Server running" | grep -i "Ambari Server running"
echo "Ambari Server running" | grep -i "Ambari Server running"
echo " Ambari Server running" | grep -i "Ambari Server running"预期结果应是:
Ambari Server running
Ambari Server running
Ambari Server running发布于 2017-08-28 05:34:55
如果您只想忽略中间的所有空格,可以使用echo your text |tr -d [[:space:]]| grep "yourtext",但是输出将没有任何空间。示例:
echo "Hi This Is Test" |tr -d [[:space:]] |grep HiThisIsTest输出:
HiThisIsTest发布于 2018-08-22 14:10:01
要回答How to match words and ignore multiple spaces?的主要问题,如下所示将帮助您获得所需的东西:
echo "Ambari Server running" | tr '[:upper:]' '[:lower:]' | grep -E '\s*ambari\s+server\s+running\s*'它接受输入并使其小写,然后搜索小写匹配。我们对0或更多的空格使用\s* (因此将包括制表符等)。和\s+用于一个或多个空格。
如果您的输入位于像下面的foo2.txt这样的文件中:
Ambari Server running
Ambari Server running
Ambari Server running然后你就可以做这样的事情:
cat foo2.txt | tr '[:upper:]' '[:lower:]' | grep -E '\s*ambari\s+server\s+running\s*'
ambari server running
ambari server running
ambari server running如果您只是对计数感兴趣,可以将其修改为如下所示:
cat foo2.txt | tr '[:upper:]' '[:lower:]' | grep -E '\s*ambari\s+server\s+running\s*' | wc -lhttps://unix.stackexchange.com/questions/388748
复制相似问题