我有以下两个文件:
$ cat in1.lst
foo.pdf
bar.pdf
$ cat in2.lst
foo.pdf
bar\355xyz.pdf
以下grep
命令适用于第一个,但不适用于第二个:
$ grep -f in1.lst /dev/null
$ grep -f in2.lst /dev/null
grep: invalid backreference number
在实际场景中,我有一个包含一长串 URL 的文件,其中一些包含\xxx
字符串。我想运行grep
并忽略反向引用的任何特殊含义。
通过参数加载文件时如何忽略反向引用的特殊含义-f
?
额外信息:
$ grep --version
grep (BSD grep) 2.5.1-FreeBSD
$ type grep
grep is aliased to `grep --color=auto'
答案1
-F
应使用/参数--fixed-strings
,它可以将模式解释为一组固定字符串(因此它强制grep
表现为fgrep
)。看:man grep
。
所以:
grep -F -f in2.lst /dev/null
或者:
fgrep -f in2.lst /dev/null