面试官都在问 | Linux命令 - grep

面试官都在问 | Linux命令-grep

在我们面试各大公司的时候,关于Linux往往最容易问到的问题之一就是Linux指令,而其中,能够使用命令进行快速的文本过滤,查找文本中的目标内容,已经是一个高频且基本的能力了,一般,面试官往往通过对于该命令的考察,获取应聘者对Linux环境是否熟悉。我们结合海量面经,提取出最容易被问到的Linux当中grep命令的常见命令行参数,供大家参考。

  • grep的核心作用
  • grep常见过滤方式及选项

grep是什么

grep是一个文本过滤器,作用是在文件中查找符合我们要求的内容。

语法格式

第一种形式,从指定的文件中找出匹配pattern的行: grep [option] pattern [file1,file2,...]

第二种形式,从管道中找出匹配pattern的行:cmd | grep [option] pattern

说明:pattern是由正则表达式字符及文本字符所编写的过滤条件。

常用选项

选项含义
-v不显示匹配行信息
-i搜索时忽略大小写
-n显示行号
-r递归搜索
-E支持扩展正则表达式
-F不按正则表达式匹配,按字符串字面意思匹配
-c只输出匹配行的数量,不显示具体内容
-o只显示模式匹配到的字符串

实例:

我们的测试文件test.txt内容如下:

I love linux
i love LINUX
i Love Linux
I LOVE LINUX
i love Linu.*

-v 选项,反向匹配:

[root@localhost ~]# grep -v love test.txt
i Love Linux
I LOVE LINUX

-i 选项,忽略大小写:

[root@localhost ~]# grep -i love test.txt
I love linux
i love LINUX
i Love Linux
I LOVE LINUX

-n 选项,显示匹配行的行号:

[root@localhost ~]# grep -n love test.txt
1:I love linux
2:i love LINUX

-E 支持扩展正则,|是扩展正则中的特殊含义的符号,代表任意一个匹配(不是管道哦):

[root@localhost ~]#  grep -E 'linux|LINUX' test.txt
I love linux
i love LINUX
I LOVE LINUX

-F 不要按正则来解析,就要字符串本身:

[root@localhost ~]#  grep -F "Linu.*" test.txt
i love Linu.*

-c 只显示匹配的行数:

[root@localhost ~]# cat /etc/passwd | grep -c "root" # 查找passwd文件中有多少行有root
2

实战

查看最近有哪些远程IP以root身份登陆过我们的机器,统计每个IP登陆的次数。我们的思路如下:

1.通过last列出最近登陆系统的所有用户。

2.过滤出以root登陆系统的IP。

3.过滤出远程登陆的IP。

4.统计出每个IP登陆的次数。

last | grep "^root" | grep -E -o "([[:digit:]]{1,3}.){3}[[:digit:]]{1,3}" | sort | uniq -c

总结

grep主要功能是文本过滤,往往需要和管道还有正则表达式搭配使用才能发挥威力。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EoRncsbw-1602670793953)(image/grep.png)]

制作人 : 李涛

审核人:王海斌

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值