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

标签 linux unix grep command

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

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

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

如果我尝试执行 grep 命令,它会正常工作,

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

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

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

我想 grep 并检查整行是否存在。可能吗?

谢谢

最佳答案

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

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

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

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

关于linux - 包含冒号的文件中的 Grep 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58596765/

相关文章:

shell - 在 shell 脚本中删除了末尾 "$( .... )"的换行符。为什么?

c - 如何使用 pthread、pthread_exit 将 * 转换为 double/float

linux - 如何使用 Sed 删除模式匹配前 5 行和模式匹配后 6 行?

c - 获取正在运行的 firefox 进程的 PID

linux - Linux 中的自定义协议(protocol)?

java - VMWare guest 工具 (vixtools) API 未找到 system/tmp 目录

linux - 如何使用 grep、awk 等在 1 中显示 2 行

linux - Linux上的TCP文件在哪里

linux - 使用 "grep"命令查找包含电话号码的txt文件

linux - grep + 适合 solaris 的 grep 语法