嗯,我有test.txt的如何讓grep在第一場比賽中停下來?
#test.txt odsdsdoddf112 test1_for_grep dad23392eeedJ test2 for grep Hello World test garbage
我想提取其中後他們已經得到了空間的字符串的文件。我用下面的表達式,它的工作
grep -o [[:alnum:]]*.[[:blank:]] test.txt
它的輸出是
odsdsdoddf112 dad23392eeedJ test2 for Hello World
但問題是grep的印刷品,經過他們已經得到了空間的所有字符串,在這裏,我希望它在第一場比賽後停止一條線,然後進入第二線。
我應該在這裏使用哪種表達方式,以便在第一次匹配後停止並移至下一行?
這個問題可以用gawk或其他工具來解決,但是我會理解一個只使用grep的解決方案。
編輯 我在Linux系統上使用GNU grep 2.5.1,如果這是相關的。
編輯
下面給出的答案的幫助下,我想我的運氣
grep -o ^[[:alnum:]]* test.txt grep -Eo ^[[:alnum:]]+ test.txt
無一不給了我正確的答案。
現在是什麼讓我驚訝的是,我試圖用
grep -Eo "^[[:alnum:]]+[[:blank:]]" test.txt
的建議here但沒有得到正確的答案。 這裏是我的終端上的輸出
odsdsdoddf112 dad23392eeedJ test2 for Hello World
但從RichieHindle和阿德里安·普龍克的意見,說明他們得到了在他們的系統正確的輸出。任何人有一些想法,爲什麼我也沒有得到我的系統相同的結果。任何想法?任何幫助將不勝感激。
編輯
嗯,看來grep的2.5.1有一些bug,因爲這是我的輸出是不正確的。我安裝了grep 2.5.4,現在它工作正常。詳情請參閱this link。
我複製你的命令到我的終端,但得到了完全相同的結果。 – 2009-09-29 22:31:43
@ andrew-dufresne:你的文本文件有些奇怪嗎?試試'od -c test.txt'這是否顯示你期待看到的角色? – RichieHindle 2009-09-29 22:34:27
@RichieHindle:感謝您的及時回覆,我真的很感激。我執行命令,並得到了相同的字符,在test.txt的 – 2009-09-29 22:40:53