我想在某些用户名上找到lastlogin.我想排除以qwer*和root开头的任何内容,但保留user.name的任何内容
这是我已经拥有的,但正则表达式的最后一部分不起作用.任何帮助赞赏.
lastlog | egrep '[a-zA-Z]\.[a-zA-Z]|[^qwer*][^root]'
Run Code Online (Sandbox Code Playgroud)
该正则表达式不符合您的想法.让我们分解一下:
[a-zA-Z]- [...]表示一个字符类.你有什么意思:a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w ,x,y,z(和资本版本).这捕获了一个角色!那不是你想要的!\. - 这是一个时期.需要反斜杠,因为.意味着"任何角色".[a-zA-Z] - 与上述相同.| - 或签字.无论是之前发生的事情,还是之后发生的事情.[^qwer*]-捕获任何单个字符这不 q,w,e,r,或*.[^root]-捕获任何单个字符这不 r,o或t.正如您所看到的,这并不完全是您想要的.请尝试以下方法:
lastlog | egrep -v '^(qwer|root$)' | egrep '^[a-zA-Z]+\.[a-zA-Z]+$'
Run Code Online (Sandbox Code Playgroud)
regexps中不能有"不匹配此组"运算符......这不是常规的.一些实现确实提供了这样的功能,即PCRE和Python的re包.
这应该让你:
lastlog | egrep -v '^qwer|^root$'
Run Code Online (Sandbox Code Playgroud)
grep 的 -v 选项为您提供不匹配的行而不是匹配的行。
如果您特别想要 User.Name 形式的用户名,那么您可以添加以下内容:
lastlog | egrep -v '^qwer|^root$' | egrep -i '^[a-z]*\.[a-z]*'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9020 次 |
| 最近记录: |