regex - 如何grep包含标点符号的字符串?

标签 regex linux bash unix grep

我正在尝试对源代码树中以下赋值右侧的字符串进行 grep(新手到正则表达式):

some_var = %1$s %2$s ID

我试过:

grep -ri '[[:punct:]]1[[:punct:]]s [[:punct:]]2[[:punct:]]s ID' . 

grep -ri "'[[:punct:]]1[[:punct:]]s'\|'[[:punct:]]2[[:punct:]]s ID'" .

我跑过:

grep -ri some_var .

这返回了 some_var 但无法弄清楚如何返回赋值运算符的另一端。

我已经通读了 gnu grep 字符类和括号表达式,但我仍然不清楚。

最佳答案

使用awk:

awk -F'[[:space:]]*=[[:space:]]*' '$1 == "some_var" { print $2 }'

sed:

sed 's/^some_var[[:space:]]*=[[:space:]]*\(.*\)/\1/'

如果你想使用 grep,你需要使用 GNU grep 和 perl 正则表达式:

grep -oP '^some_var\s*=\s*\K.*'

但正如我所说,这仅适用于 GNU grep 而不是标准。

关于regex - 如何grep包含标点符号的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45890138/

相关文章:

linux - 根据条件将 bash 中的 CSV 文件拆分为多个文件

android - 如何搜索特定格式的电子邮件列表?

java - 如何用一个替换字符串中的多个斜杠和反斜杠?

Linux目录卡在只读状态

mysql - MariaDB 10 CentOS 7 移动数据目录问题

linux - 使用 bash 脚本重命名 xml 文件扩展名

linux - 模式解码

linux - 如何使用 image magick 编写将图像切割成碎片的 bash 脚本?

java - 我真的应该使用 REGEX 还是继续使用肮脏的 Java IF 语句? (为了表现)

regex - 贪心正则匹配