gpt4 book ai didi

bash - 有没有一种简单的方法可以将 "raw"字符串传递给 grep?

转载 作者:行者123 更新时间:2023-11-29 08:40:46 26 4
gpt4 key购买 nike

grep 从命令行使用时不能输入“原始”字符串,因为某些字符需要转义才能不被视为文字。例如:

$ grep '(hello|bye)' # WON'T MATCH 'hello'
$ grep '\(hello\|bye\)' # GOOD, BUT QUICKLY BECOMES UNREADABLE

我正在使用 printf 来自动转义字符串:

$ printf '%q' '(some|group)\n'
\(some\|group\)\\n

这会生成字符串的 bash 转义版本,并使用反引号,这可以很容易地传递给 grep 调用:

$ grep `printf '%q' '(a|b|c)'`

然而,这显然不是为了这个:输出中的一些字符没有转义,有些是不必要的。例如:

$ printf '%q' '(^#)'
\(\^#\)

^ 字符在传递给 grep 时不应转义。

是否有一个 cli 工具可以获取原始字符串并返回可以直接用作 grep 模式的字符串的 bash 转义版本?如果不是,我怎样才能在纯 bash 中实现这一点?

最佳答案

如果你想搜索一个精确的字符串,

grep -F '(some|group)\n' ...

-F 告诉 grep 按原样处理模式,不将其解释为正则表达式。

(这通常也可以作为 fgrep 使用。)

关于bash - 有没有一种简单的方法可以将 "raw"字符串传递给 grep?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11856054/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com