如何使用grep匹配第一个空格之前的所有字符?

时间:2017-02-09 13:44:57

标签: regex grep

我想使用grep匹配第一个空格之前的所有字符。

grep "^[^\s]*" filename.txt

没用。相反,第一个s之前的所有字符都匹配。 grep中没有\s吗?

2 个答案:

答案 0 :(得分:1)

您还可以尝试使用perl正则表达式标志Po标记来仅显示输出中匹配的部分:

grep -oP "^\S+" filename.txt

答案 1 :(得分:0)

使用POSIX字符类:

grep -o '^[^[:blank:]]*' filename.txt

至于\s可用的地方:

  • POSIX grep仅支持基本正则表达式,或者在调用grep -E时,支持扩展正则表达式,两者都没有\s
  • GNU grep支持\s作为[[:space:]]
  • 的同义词
  • BSD grep似乎不支持\s

或者,你可以使用awk将字段分隔符显式设置为单个空格,这样就不会忽略前导空格:

awk -F ' ' '{ print $1 }'