0

bourne シェル スクリプト内で grep を使用して、テキスト ファイル内の特定のパターンを見つけようとしています。

スタイルは次のとおりです。word1 word2 word3

そのスタイルではないものはすべて印刷したい。これまで私が使用した

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

単語間に2つ以上の空白を見つけることができますが、1行あたり3単語の制限が保持されるようにする方法がわかりません。

私の他の方法は、1行あたりの単語数も数え、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回繰り返し
  • これはすべて 1 行で行う必要があります。^...$
  • -vオプションでこれを否定します
于 2013-10-02T23:29:48.573 に答える