close

前幾天 在shell prompt下想找一個文字檔text-file中帶有$的行時
發現必須指令要這樣敲才行
$ grep \\$ text-file
必須要用到兩個反斜線才行
都不加反斜線想當然$會被當特殊字元看待
加了一個反斜線後的結果還是跟沒加一樣
我的認為是,上述指令的第一個反斜線會被shell 先解譯
讓後面跟著的\使其失去意義,再來就剩下\$被丟進grep裡處理,
原先指令第2個反斜線雖然被脫逸,但那是對shell來說,
而對grep來講,被丟進去的\$中的反斜線還是有意義的,
所以最後結果就是脫逸$錢字號而能找到正確結果了.
這也能解釋只用一個反斜線卻跟都不用反斜線卻有相同結果的情況.
還有像要在shell prompt下要找具有特殊意義的其它字元時
(e.g. :代開行首的^字號等)也能適用.

P.S.
其實可以拿到vi中去試看看,載入檔案後在一般模式中,輸入
:%s/\$/?/g
可以正確將$錢字號轉成?問號,但是輸入
:%s/\\$/?/g
兩個反斜線,就會跟你說它找不到pattern


全站熱搜
創作者介紹
創作者 fvalinux 的頭像
fvalinux

Elegance

fvalinux 發表在 痞客邦 留言(1) 人氣()