2011-10-04 122 views
3

我試圖寫一個bash腳本,將通過一個txt文件搜索從儲存變量中的另一個txt文件的字符串。然而,字符串中有許多特殊字符,出於某種原因,它似乎正在破壞grep命令。 字符串如下: Sometxt ^/someurl/$ http://somewebsite.com/Grep命令被特殊字符逆轉?

我使用grep命令是

grep -v "$string" file.txt >> new_file.txt 

這似乎並沒有工作,如果我贊同的實際grep命令?使用:

echo "grep -v \"$string\" file.txt >> new_file.txt" 

我得到一個混亂的輸出。

如果我進入grep命令手冊,並進入正常工作,所以我假設我的外殼是努力擴大特殊字符,但我沒怎麼在字符串中逃脫所有的人的實際字符串。

任何人有任何想法?

謝謝。

+2

回聲是找出「什麼是真正執行」一個貧窮的方式 - 使用'設置-x'了點。 – Sorpigal

回答

5

嘗試fgrep一樣(或grep -F

默認情況下grep的解釋爲基本正則表達式搜索模式,賦予特殊意義的字符,如.$^[]

1

未經檢驗的,但這種威力 help

grep -v "$(printf "%q" "$string")" file.txt >> new_file.txt 

bash builtin printf %q格式化程序轉義shell特殊字符。