面试官都在问 | Linux命令 - grep
  Kv5JCWxJhdHt 2023年11月02日 31 0


面试官都在问 | 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 选项,忽略大小写:

[root@localhost ~]# grep -i love test.txt

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

[root@localhost ~]# grep -n love test.txt

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

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

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

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

-c 只显示匹配的行数:

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

实战

查看最近有哪些远程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

总结

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

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

制作人 : 李涛

审核人:王海斌


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  JiJ96DoSHEh4   2023年11月19日   17   0   0 bashlinux
  uRXtDv0LQww7   2023年12月11日   22   0   0 linux
Kv5JCWxJhdHt
最新推荐 更多