【发布时间】:2014-08-22 21:29:03
【问题描述】:
嗯,我有一个文件 test.txt
#test.txt odsdsdoddf112 test1_for_grep dad23392eeedJ test2 用于 grep 你好世界测试 垃圾我想提取后面有空格的字符串。我使用了以下表达式,它起作用了
grep -o [[:alnum:]]*.[[:blank:]] test.txt它的输出是
odsdsdoddf112 爸爸23392eeedJ 测试2 为了 你好 世界但问题是 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 爸爸23392eeedJ 测试2 为了 你好 世界但来自 RichieHindle 和 Adrian Pronk 的 cmets 表明,他们在系统上获得了正确的输出。任何人都知道为什么我在我的系统上也没有得到相同的结果。任何想法?任何帮助将不胜感激。
编辑
好吧,似乎 grep 2.5.1 有一些错误,因此我的输出不正确。我安装了 grep 2.5.4,现在它可以正常工作了。详情请见this link。
【问题讨论】:
标签: grep