使用grep查找方法的参数

时间:2014-11-11 13:05:03

标签: grep

我需要一些grep命令的帮助(在Bash中)。

在我的源文件中,我想列出函数的所有唯一参数。背景:我想搜索所有文件,以查看使用了哪些权限([perm("abc")]

example.txt中:

if (x) perm("this"); else perm("that");
perm("what");

我想要grep输出:

this
that
what

如果我使用此搜索表达式grep

perm\(\"(.*?)\"\)

我会得到perm("this)perm("that")等等,但我想拥有权限:这个和那个以及什么。

我该怎么做?

2 个答案:

答案 0 :(得分:4)

使用后视:

$ grep -Po '(?<=perm\(")[^"]*' file
this
that
what

这会查找perm("之后发现的所有文字,直到找到另一个"

注意-P用于允许此行为(它是Perl正则表达式)和-o只打印匹配的项目,而不是整行。

答案 1 :(得分:1)

以下是gnu awk版本(由于RS中的多个字符)

awk -v RS='perm\\("' -F\" 'NR>1 {print $1}' file
this
that
what