[英]Why can't I use ^\s with grep?
下面的兩個正則表達式都適用於我的情況。
grep \s
grep ^[[:space:]]
然而,下面所有的人都失敗了。 我在 git bash 和 putty 中都試過了。
grep ^\s
grep ^\s*
grep -E ^\s
grep -P ^\s
grep ^[\s]
grep ^(\s)
最后一個甚至會產生語法錯誤。
如果我在 debuggex 中嘗試^\s
它會起作用。
如何使用grep
查找以空白字符開頭的行? 我必須使用[[:space:]]
嗎?
grep \s
適合你,因為你的輸入包含s
。 在這里,您轉義s
並且它匹配s
,因為它沒有被解析為匹配正則表達式轉義的空格。 如果您使用grep ^\\s
,您將匹配以空格開頭的字符串,因為\\
將被解析為文字\
字符。
更好的想法是使用-E
啟用 POSIX ERE 語法並引用模式:
grep -E '^\s' <<< "$s"
請參閱在線演示:
s=' word'
grep ^\\s <<< "$s"
# => word
grep -E '^\s' <<< "$s"
# => word
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.