【问题标题】:Grep string in a file containing colon包含冒号的文件中的 Grep 字符串
【发布时间】:2020-02-24 01:31:49
【问题描述】:
我在一个多行文件中有以下字符串
.....<other lines>
-classpath "${ROOT}/abcjars/*:${ROOT}/lib/*" \
.....<otherlines>
我想检查文件中是否存在类路径行
如果我尝试遵循 grep 命令,它会正常工作,
grep '\-classpath \"${ROOT}/abcjars/*' $File
但如果我在搜索模式中添加冒号 (:) 则不起作用
grep '\-classpath \"${ROOT}/abcjars/*:' $File
我想 grep 并检查整行是否存在。有可能吗?
谢谢
【问题讨论】:
标签:
linux
unix
grep
command
【解决方案1】:
使用转义字符
grep '\-classpath \"${ROOT}/abcjars/\*:' $File
如果还是同样的问题,请尝试使用 grep regexp flag
【解决方案2】:
在正则表达式中,* 有特殊含义,表示匹配前面的字符零次或多次。但是在你的文件中,你没有在/ 序列之后立即有:(因为* 在它们之间),所以它不匹配。
您没有进行任何正则表达式模式匹配,因此您应该使用-F 选项来指定这是一个固定字符串。
grep -F -e '-classpath "${ROOT}/abcjars/*:' $File
需要-e 选项以允许以- 开头的搜索字符串,否则将搜索字符串视为选项。