我在一个多行文件中有以下字符串
.....<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标志