使用grep查找一行中的特定模式

时间:2013-10-02 23:04:18

标签: regex bash shell grep

我正在尝试使用bourne shell脚本中的grep在文本文件中找到特定模式

风格为:word1 word2 word3

我想要打印那种不那种风格的东西。到目前为止我用过

grep -e '[[:space:]]\{2,\}' somefile

在单词之间找到两个以上的空格,但我无法弄清楚如何制作它以便保留每行限制3个单词。

我的另一种方法是计算每行有多少个单词,如果超过3,则打印该行。或者在第三个单词的末尾检查空格,但我不确定如何格式化。

1 个答案:

答案 0 :(得分:0)

我不确定这是不是你想要的,但是在这里:

]$ cat input
one

one two
one two three
one two three four

]$ grep -v -e "^[^[:space:]]\+ [^[:space:]]\+ [^[:space:]]\+$" input
one

one two
one two three four

我们匹配:

  • 任意数量的非空格:[^[:space:]]\+
  • 直到我们得到一个空间
  • 重复3次
  • 这一切应该在一行中:^...$
  • 我们用-v选项
  • 否定了这一点