干货 | 名企高频考点之Linux命令-grep

概述

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

grep是什么

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

语法格式

形式一,从指定的文件中找出匹配pattern的行:
grep [option] pattern [file1,file2,...]
形式二,从管道中找出匹配pattern的行:
cmd | grep [option] pattern
说明:pattern是由正则表达式字符及文本字符所编写的过滤条件。

常用选项

实例:
我们的测试文件test.txt内容如下:
I love linuxi love LINUXi Love LinuxI LOVE LINUXi love Linu.*
  • -v 选项,反向匹配:

[root@localhost ~]# grep -v love test.txti Love LinuxI LOVE LINUX
  • -i 选项,忽略大小写:

[root@localhost ~]# grep -i love test.txtI love linuxi love LINUXi Love LinuxI LOVE LINUX
  • -n 选项,显示匹配行的行号:

[root@localhost ~]# grep -n love test.txt1:I love linux2:i love LINUX
  • -E 支持扩展正则,| 是扩展正则中的特殊含义的符号,代表任意一个匹配(不是管道哦):

[root@localhost ~]#  grep -E 'linux|LINUX' test.txtI love linuxi love LINUXI LOVE LINUX
  • -F 不要按正则来解析,就要字符串本身:

[root@localhost ~]#  grep -F "Linu.*" test.txti love Linu.*
  • -c 只显示匹配的行数:

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

实战

查看最近有哪些远程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主要功能是文本过滤,往往需要和管道还有正则表达式搭配使用才能发挥威力。
好啦,本期内容就到这儿了,希望对大家有所帮助哦~
(0)

相关推荐