簡體   English   中英

為什么我不能將 ^\s 與 grep 一起使用?

[英]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它會起作用。

正則表達式可視化

Debuggex 演示

如何使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM