包含冒号的文件中的Grep字符串



我在一个多行文件中有以下字符串

.....<other lines>
-classpath "${ROOT}/abcjars/*:${ROOT}/lib/*" 
.....<otherlines>

我想检查类路径行是否存在于文件中或中

如果我尝试遵循grep命令,它可以正常工作,

grep '-classpath "${ROOT}/abcjars/*' $File

但如果我在搜索模式中添加冒号(:(,就不起作用了

grep '-classpath "${ROOT}/abcjars/*:' $File

我想grep并检查是否存在整条线路。有可能吗?

感谢

在正则表达式中,*有特殊的含义,它意味着与前面的字符匹配零次或多次。但是在您的文件中,/序列之后没有紧接着的:(因为*在它们之间(,所以它不匹配。

您没有进行任何正则表达式模式匹配,因此应该使用-F选项来指定这是一个固定字符串。

grep -F -e '-classpath "${ROOT}/abcjars/*:' $File

需要-e选项才能允许以-开头的搜索字符串,否则该搜索字符串将被视为一个选项。

使用转义符

grep '-classpath "${ROOT}/abcjars/*:' $File

如果仍然存在相同的问题,请尝试使用grep-regexp标志

最新更新