首页 > 解决方案 > Grep 不适用于带有数字和空格的字符串

问题描述

我正在尝试在我的文件中打印以下所有条目

show initial all#Total brb Errors Received#g1/1 
show initial all#Total brb Errors Received#g0/2 
show initial all#Total brb Errors Received#g0/3
show initial all#Total brb Errors Received#g4/3 

由于我的字符串有一个空格,我以以下格式编写了 grep,以便获得预期的输出

grep "show initial all#Total brb Errors Received#g*/*" inputfile > output file

有什么输入吗?

标签: regexbashshellunixgrep

解决方案


采用:

grep -E 'show initial all#Total brb Errors Received#g[[:digit:]]+/[[:digit:]]+' inputfile > output file

或者;

grep -E 'show initial all#Total brb Errors Received#g[0-9]+/[0-9]+"' inputfile > output file

-E方法使用“扩展正则表达式”。该+方法查找“一个或多个”或前一个表达式,它(在两种情况下)都是匹配单个数字的正则表达式(字符类)。

请注意,如果您只想匹配单个数字,则省略+(在每个正则表达式中两次),并且该-E选项变得不必要(正则表达式在有和没有该-E选项的情况下都一样)。

在参数周围使用单引号而不是双引号通常更安全,尤其是正则表达式参数。有例外(例如当您需要获取包含在正则表达式中的 shell 变量的值时),但尽可能使用单引号。


推荐阅读