0

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

风格是:word1 word2 word3

我想打印所有不属于那种风格的东西。到目前为止我用

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

在单词之间找到超过 2 个空格,但我无法弄清楚如何做到这一点,以便保留每行 3 个单词的限制。

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

4

1 回答 1

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我们用选项否定这个
于 2013-10-02T23:29:48.573 回答