我正在尝试对源代码树中以下赋值右侧的字符串进行 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/