如何使用 grep 搜索模式?

如何使用 grep 搜索模式?

我想搜索一个文件以检查是否存在这样的模式: text1,text2,[1.2.3,3.4.5,6.7.8,etc]存在。方括号内的逗号数量未定义。

我尝试了以下命令,但它在后面打印了逗号text1text2这不是我想要的。我只是在寻找方括号内的逗号。

$ grep -E '[*,*]' myfile.txt

编辑#1

这是一些示例输入。请注意,括号内的逗号可以大于或小于示例中的数字(即未定义的数字,因此我必须使用正则表达式捕获它们):

1.com,1.2.3.4,txt1,txt11,['1.2.3.4', '5.6.7.8']
2.com,3.4.5.6,txt2,txt21,['5.6.6.6']
3.com,5.5.5.5,txt3,txt31,['1.1.1.1', '2.2.2.2', '3.3.3.3']

答案1

要匹配方括号内至少包含一个逗号的行,您可以使用

grep '\[.*,.*\]'

前任。

$ grep '\[.*,.*\]' file
1.com,1.2.3.4,txt1,txt11,['1.2.3.4', '5.6.7.8']
3.com,5.5.5.5,txt3,txt31,['1.1.1.1', '2.2.2.2', '3.3.3.3']

方括号需要转义,因为它们在正则表达式语法中具有特殊含义。请注意,我不需要使用-Ewith grep, 的基本模式匹配功能grep就足够了。

笔记: grep通常会将匹配显示为彩色,这样您就可以知道您使用的任何模式实际上匹配了什么:

   SS1

相关内容