我已經搜索了很多,無法弄清楚我在這裏做錯了什麼。我有可能包含類似於下面的字符串的文本文件:Grep搜索特定字符故障
/dev/dir1/dir2 200G 22G 179G 11% /usr/dir3/dir4
我大致知道刺痛將是什麼樣子,直到磁盤百分比指標(即11%),但在的最後部分字符串我需要弄清楚它是否在usr(或sub)目錄中結束。
我想使用grep來做這個搜索,但有問題。例如,下面的命令給我輸出,但是一旦我替換了任何「。」。 「G」或「%」所在的字符,或者如果我試圖在最後添加「/usr/.*」,它拒絕返回任何內容。
$ egrep ^/dev/dir1/dir2\s*\d*.\s*\d*.\s*\d*.\s*\d*.\s*.*$ testfile
/dev/dir1/dir2 200G 22G 179G 11% /usr/dir3/dir4
有趣的問題。但是,試着澄清一下你的樣本輸入是什麼,以及應該是什麼樣的輸出。閱讀[ask]以獲得更好的方法 – fedorqui
像這樣的一個沒有引號的模式參數根本不應該工作。你確定它是?使用該命令'grep'可以看到'^/dev/dir1/dir2s * d * .s * d * .s * d * .s * d * .s *。* $'這顯然不是您的意思。在模式中放置單引號是否有幫助?哦!這個不帶引號的模式歸結爲'^/dev/dir1/dir2 ..... * $',這顯然與您的輸入相匹配。它將匹配從該路徑開始的任何事物。但是如果你在任何地方粘貼'G'或'%',也將無法匹配。 –
要回答你的問題,是的,在我上面發佈的內容中沒有引號會返回我粘貼的內容。我也嘗試過用單引號和雙引號括起來,並沒有什麼區別(我在CentOS 6中,如果這很重要......)。一旦我替換: egrep「^/dev/dir1/dir2 \ s * \ d *。\ s * \ d *。\ s * \ d *。\ s * \ d *。\ s *。* $」 testfile 類似於: egrep「^/dev/dir1/dir2 \ s * \ d * [G] \ s * \ d *。\ s * \ d *。\ s * \ d *。\ s *。* $「testfile 它立即無法接通線路。 希望這有助於澄清,試圖解釋,以及我可以。對不起,任何困惑 - 新社區和第一次海報。 – nickm