正则表达式用于冒号分隔字段的确切数量

时间:2018-03-20 14:20:00

标签: regex bash grep

我正在搜索一个正则表达式,它恰好与7个出现的。* :( 7个字段冒号分开)

不幸的是,我结合了什么:

grep -E '(.*:){7}' ...
当我在{}中删除数字时,

也会打印相同的行。 如何测试它固定7次出现?

2 个答案:

答案 0 :(得分:0)

您的问题陈述"匹配7个冒号分隔的字段"非常适合awk:

awk -F: 'NF == 7' file ...

答案 1 :(得分:0)

以防您仍想使用grep来解决问题:

grep -E '^([^:]*:){7}[^:]*$' file

<强>详情:

  • ^ - 行首
  • ([^:]*:){7} - 恰好7次出现
    • [^:]* - 除:
    • 以外的零个或多个字符
    • : - 冒号
  • [^:]* - 除:
  • 以外的零个或多个字符
  • $ - 行尾。

查看online demo of the regex不依赖此服务来检查grep模式的有效性!