以下两种正则表达式均适用。
grep \s
grep ^[[:space:]]
但是,所有以下失败。我在git bash和腻子中都尝试过。
grep ^\s
grep ^\s*
grep -E ^\s
grep -P ^\s
grep ^[\s]
grep ^(\s)
最后一个甚至会产生语法错误。
如果我在debuggex中尝试使用^\s
,那么它将起作用。
如何找到以grep
开头的空格字符的行?我必须使用[[:space:]]
吗?
答案 0 :(得分:1)
grep \s
对您有用,因为您的输入包含s
。在这里,您对s
进行转义,并且它与s
匹配,因为它没有被解析为与正则表达式转义符匹配的空白。如果使用grep ^\\s
,则将匹配一个以空格开头的字符串,因为\\
将被解析为文字\
字符。
一个更好的主意是使用-E
启用POSIX ERE语法并引用该模式:
grep -E '^\s' <<< "$s"
请参见online demo:
s=' word'
grep ^\\s <<< "$s"
# => word
grep -E '^\s' <<< "$s"
# => word