[英]Grep pattern within pattern
cat sudo.txt |tr -d "[:blank:]"|grep '=.*[ALLroot].*/usr/bin/vim'
我想跟踪以下内容:
=(root)NOPASSWD:/usr/bin/vim
=(ALL)NOPASSWD:/usr/bin/vim
=NOPASSWD:/usr/bin/vim
但不是:
=(user)NOPASSWD:/usr/bin/find
根据给出的数据,
grep -E '\bNOPASSWD:/usr/bin/vim\b' sudo.txt
如果选择还不够,请显示示例并解释缺少的要求。
[ALLroot]
匹配A
或L
或r
或o
或t
。 使用(ALL|root)
代替
鉴于:
cat sudo.txt
=(root)NOPASSWD:/usr/bin/vim
=(ALL)NOPASSWD:/usr/bin/vim
=NOPASSWD:/usr/bin/vim
=(user)NOPASSWD:/usr/bin/find
grep -E '=(\((root|ALL)\))?.*/usr/bin/vim' sudo.txt
=(root)NOPASSWD:/usr/bin/vim
=(ALL)NOPASSWD:/usr/bin/vim
=NOPASSWD:/usr/bin/vim
说明:
选项-E
:扩展模式
= # equal sign
( # start group
\( # opening parenthesis
(root|ALL) # root OR ALL
\) # closing parenthesis
)? # end group, optional
.* # 0 or more any character
/usr/bin/vim # literally
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.