2011-10-04 84 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特殊字符。