首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何匹配单词而忽略多个空格?

如何匹配单词而忽略多个空格?
EN

Unix & Linux用户
提问于 2017-08-28 05:29:19
回答 2查看 40K关注 0票数 9

下面的语法应该与"Ambari运行“匹配,但是在单词之间有多个空格的情况下如何匹配呢?如何忽略单词之间的空格?

代码语言:javascript
运行
复制
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"

预期结果应是:

代码语言:javascript
运行
复制
Ambari Server running
Ambari Server running
Ambari Server running
EN

回答 2

Unix & Linux用户

发布于 2017-08-28 05:34:55

如果您只想忽略中间的所有空格,可以使用echo your text |tr -d [[:space:]]| grep "yourtext",但是输出将没有任何空间。示例:

代码语言:javascript
运行
复制
echo "Hi This   Is Test" |tr -d [[:space:]] |grep HiThisIsTest

输出:

代码语言:javascript
运行
复制
HiThisIsTest
票数 1
EN

Unix & Linux用户

发布于 2018-08-22 14:10:01

要回答How to match words and ignore multiple spaces?的主要问题,如下所示将帮助您获得所需的东西:

代码语言:javascript
运行
复制
echo "Ambari Server      running"  | tr '[:upper:]' '[:lower:]' | grep -E '\s*ambari\s+server\s+running\s*'

它接受输入并使其小写,然后搜索小写匹配。我们对0或更多的空格使用\s* (因此将包括制表符等)。和\s+用于一个或多个空格。

如果您的输入位于像下面的foo2.txt这样的文件中:

代码语言:javascript
运行
复制
Ambari Server      running 
Ambari     Server running
     Ambari Server running

然后你就可以做这样的事情:

代码语言:javascript
运行
复制
cat foo2.txt | tr '[:upper:]' '[:lower:]' | grep -E '\s*ambari\s+server\s+running\s*'
ambari server      running
ambari     server running
     ambari server running

如果您只是对计数感兴趣,可以将其修改为如下所示:

代码语言:javascript
运行
复制
cat foo2.txt | tr '[:upper:]' '[:lower:]' | grep -E '\s*ambari\s+server\s+running\s*' | wc -l
票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/388748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档