我需要一些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")
等等,但我想拥有权限:这个和那个以及什么。
我该怎么做?
答案 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