我想使用grep匹配第一个空格之前的所有字符。
grep "^[^\s]*" filename.txt
没用。相反,第一个s
之前的所有字符都匹配。 grep中没有\s
吗?
答案 0 :(得分:1)
您还可以尝试使用perl正则表达式标志P
和o
标记来仅显示输出中匹配的部分:
grep -oP "^\S+" filename.txt
答案 1 :(得分:0)
使用POSIX字符类:
grep -o '^[^[:blank:]]*' filename.txt
至于\s
可用的地方:
grep -E
时,支持扩展正则表达式,两者都没有\s
\s
作为[[:space:]]
\s
或者,你可以使用awk将字段分隔符显式设置为单个空格,这样就不会忽略前导空格:
awk -F ' ' '{ print $1 }'