regex - 插入符号不适用于 grep

标签 regex linux ubuntu

这行不通

grep -h '^zip' log*

这行得通

grep -h '[^bg]zip' log*

log* 文件肯定包含一个名为 zip 的文件,因为第二条命令会打印出文件名。但是第一个根本不打印任何东西。我尝试了几次,发现插入符号只能用作括号中的否定。在括号之外,它并不意味着它后面的东西会在单词的开头。 这里有什么问题?我正在使用 ubuntu 12.4

最佳答案

beginning of the word

^ 标记行的开始,而不是单词。 "foo zip" 不会匹配 ^zip,但 "zip foo" 会。如果你想在单词的开头匹配 zip,使用这个:

grep \\bzip

\b 标记了一个单词边界,但是你需要加倍使用转义符,因为你的 shell 会去掉一个。 (grep '\bzip' 也有效。)

关于regex - 插入符号不适用于 grep,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29689234/

相关文章:

linux - 修改基于 expect 的 SSH 脚本以在不需要密码的机器上工作

linux - 在 Go 中,为什么 "File.Readdirnames"会进行 "clock_gettime"系统调用?

c - 如何使用 P 进程确定一个值是否存在于数组中

Laravel 和 Docker 权限问题 - 无法保存文件

r - 添加\\以使用正则表达式转义字符串中的非 UTF 8 字符

Java 正则表达式速成

java - 从 php 执行 jar 文件时无法连接到 X11 服务器

linux - sudo写入模式错误

regex - PowerShell Get-Content并在特定行中替换对象

regex - 如何用动态字符串替换字符串