2013-10-02 19 views
0

我試圖使用Bourne shell腳本里面grep來查找在文本文件中的特定模式使用grep來查找特定模式在一條線上

的風格是:word1 word2 word3

我想打印的一切那不是那種風格。到目前爲止,我用

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

找到的話之間超過2米空的空間,但我無法弄清楚如何讓這個每行限3個字的保留。

我的另一種方法是計算每行有多少單詞,如果超過3則打印該行。或者在第三個單詞的末尾檢查一個空格,但我不確定如何格式化。

+0

使用-v選項。 – Ingo

+0

grep的目的是找到包含特定模式的行。也許試着去思考下一個問題的標題? – tripleee

+0

迂腐的筆記:實際上不太可能使用Bourne shell,而是一些名爲'sh'的POSIX兼容shell,它具有比原始Bourne shell更多的功能。 – chepner

回答

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選項
+0

嘿,這個作品完美!我怎麼才能讓輸出在單獨行中出現而不是一次性出現?我在bourne shell腳本中使用echo – thunderfox

+0

我不確定我是否理解。你在問怎麼讓'echo'打印出多行? – danadam

+0

沒關係,我用\ n的printf,但是謝謝你:D – thunderfox