grep和awk命令的结合使用

前两天项目经理给了我们一个题目:“查询/etc/Passwd/里边可以登陆用户的uid,只要用户名和uid并且中间以横杠隔开。

这对我来说是个有点难度的事情,为此我还去问了一下我的同学,但他们说也都忘了

无奈的我只能自己去找度娘寻找答案。我搜到了grep的用法,但是对于密集恐惧症的我来说看着都头疼,最后终于找到了个简洁明了的使用介绍,grep,属于“文本处理三剑客“中的一位(文本处理三剑客包括:grep、awk、sed)。其作用是文本搜索,它可以正则表达式搜索文本,也可从一个文件中的内容作为搜索关键字。要想完成这个题目首先我们需要查看这个目录的详细信息,我们用“cat”命令查看“cat /etc/passwd”结果如下

可以看到我们里面好多系统中的用户信息。然后我们以root为例,我们可以看出这一行是以冒号为分割符的七个配置字段。

第一个字段,也就是第一列,代表用户名。

第二个字段,代表用户密码,不过现在已经放到/etc/shadow中了(感兴趣的可以去看一看,我已经看过了,里面的密码是以加密的形式呈现的),目前此字段用“*”代替。

第三个字段,代表该用户的uid。

第四个字段,代表该用户的所属组账号的gid号

第五个字段,代表该用户的描述信息,比如他是个什么角色的人。

第六个字段,代表该用户的家目录。

第七个字段,代表该用户的shell环境(shell 环境中的数据被程序用来确定配置属性.)

了解完这些信息之后我们再回头去看之前的题目,我们可以看到用户和uid分别位于第一个字段和第三个字段。但是grep只能输出某个字符串或者输出该字符串的整行。然后我又去“百度”了一下,最后结合着cut命令,最终得出这条命令行:

  • ①代表我们要查看的目录,然后后面空格,跟个“|”(管道符,表示过滤)
  • ②代表用grep命令 -v:显示不包含匹配文本的所有行。
  • ③/sbin/nologin(表示shell环境中此用户无法登陆系统,即使给了密码也不行)这样就能筛选出哪些是可以登录的用户了。
  • ④然后再加一个管道符用cut命令来表示只需要显示的字段。

然后运行后发现确实是显示出来了可以登录的用户和uid,却无法用“-”作为分隔符隔开。最后我决定还要去问度娘,然后搜了awk的用法,最后在grep和awk的联合使用下完成了这道题目。

 

 

以下是awk、cut、grep的基本用法

awk的基本用法

-F : 指定文本分割符 默认空格或tab

-v : 定义变量

-f : 指定awk的命令文本,当awk的匹配规则比较复杂时,可将其写入到文件,通过-f参数引用文件。

cut的基本用法

-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。

-c :以字符为单位进行分割。

-d :自定义分隔符,默认为制表符。

-f :与-d一起使用,指定显示哪个区域。

-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的<br />范围之内,该字符将被写出;否则,该字符将被排除。

grep的基本用法:

-c:只输出匹配行的计数。

-i:不区分大小写。

-h:查询多文件时不显示文件名。

-l:查询多文件时只输出包含匹配字符的文件名。

-n:显示匹配行及 行号

-s:不显示不存在或无匹配文本的错误信息。

-v:显示不包含匹配文本的所有行。

-color=auto :可以将找到的关键词部分加上颜色的显示。

 

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

指南针先生Mr.杜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值