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

时间:2017-08-25 22:27:12

标签: 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字符类和括号表达式,但它仍然不清楚。

2 个答案:

答案 0 :(得分:0)

使用awk

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

sed

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

如果你想使用grep,你需要在perl regexes中使用GNU grep:

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

但正如我所说,这只适用于GNU grep并且不是标准的。

答案 1 :(得分:0)

用GNU sed删除左侧:

$ sed 's/^some_var\s=\s*//' <<< "some_var = %1$s %2$s ID"
%1 %2 ID