【问题标题】: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 选项以允许以- 开头的搜索字符串,否则将搜索字符串视为选项。

    【讨论】:

      猜你喜欢
      • 2013-04-28
      • 1970-01-01
      • 2015-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-03
      • 2013-07-06
      • 1970-01-01
      相关资源
      最近更新 更多