我的檔案包含以下幾行:
我的檔案包含以下幾行:
hello_400 [200]/span>
world_678 [201]/span>
這個[301]是[301]
是[302]。
你的[200]是[302]/span>
friendly_103[404]
utility[200]
grep [200]
我只想尋找以[200]結尾的行。我試著用以下模式來逃避方括號:
cat file | grep [200]cat file | grep [200]$
而結果要么包含所有的行,要么什么都沒有。這是非常令人困惑的。
uj5u.com熱心網友回復:
我建議轉義[和],并且用單引號參考完整的regex來防止你的shell解釋regex。
grep '[200]$' file
輸出:
hello_400 [200] 。 你的 [200] 實用程式 [200] grep [200]
uj5u.com熱心網友回復:
在shell中總是在字串周圍使用引號,除非你因為某些原因需要移除引號(例如檔案名擴展),見https://mywiki.wooledge.org/Quotes,所以默認情況下做grep 'foo'而不是grep foo。然后你只需要在你的字串中轉義[ regexp元字符,使其成為字面意思,即grep '[200]' file。
與其使用grep,并且必須轉義regexp元字符以使其表現為字面意思,不如使用awk,它支持在特定欄位上進行字面字串比較:
$ awk '$NF=="[200]"'/span> file
hello_400 [200]
你的 [200]
實用性 [200]
grep [200]
或者跨越整行:
$ awk 'index($0," [200]")' file
hello_400 [200]
你的 [200]
utility [200]
grep [200]
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/323778.html
標籤:
上一篇:負數后置量詞不固定
