grep常用方法

  • grep匹配多个关键字
  • 1、 grep ‘字符串’
  • 2、 反向匹配grep -v ‘字符串’
  • 3、 grep -E 同时匹配多个关键字–或关系
  • 4、 同时匹配多个关键字–与关系
  • 通配符(匹配文件名)
  • 常用正则表达式(匹配文件内容)
  • grep常用语法

grep匹配多个关键字

grep 命令非常常用,经常用于匹配文本字符。

grep过滤空格 grep命令过滤多个条件_bc

一般情况下,grep 命令只能匹配一个关键字,怎么实现匹配多个关键字呢?

下面看几种情况:

grep过滤空格 grep命令过滤多个条件_服务器_02

1、 grep ‘字符串’

这是最普通的使用方式:

`grep 关键字 文件名`
`匹配文件中包含 MANPATH 的那一行:
cat manpath.config | grep 'MANPATH'`

# 匹配关键字及下面的一行
greo eht1 -A1 filename

# 模糊匹配
grep "abc"   # 结果为abcd, abcde, abc等

# 精确匹配/全匹配
grep -w "abc" # 结果为abc

2、 反向匹配grep -v ‘字符串’

与上例子相反,反向匹配

`匹配文件中不包含 MANPATH 的那一行:
cat manpath.config| grep -v 'MANPATH'`

3、 grep -E 同时匹配多个关键字–或关系

grep -E 是使用扩展正则表达式
也就是egrep命令

`grep -E "word1|word2|word3" file.txt
匹配 file.txt 中包含 word1 或 word2 或 word3 的行。
满足其中任意条件(word1、word2和word3之一)就会匹配。`

4、 同时匹配多个关键字–与关系

使用管道符连接多个 grep ,间接实现多个关键字的与关系匹配:

`grep word1 file.txt | grep word2 |grep word3
必须同时满足三个条件(word1、word2和word3)才匹配。`

通配符(匹配文件名)

参考: https://abcfy2.gitbooks.io/linux_basic/content/first_sense_for_linux/command_learning/wildcard.html

# 代表任意字符{0到多个}
*

# 代表一个字符
?

# 中间为字符组合,仅匹配其中任一一个字符
[]

# 单个小写字母
[a-z]

# 单个大写字母
[A-Z]

常用正则表达式(匹配文件内容)

正则表达式常用于日志分析

^ 表示以指定字符开头

$ 表示以指定字符结尾

. 表示匹配任意一个非空字符

.* 表示匹配任意非空字符(1— N个非空字符)

表示可以重复前面指定的字符1此或0次

. 表示匹配任意两个非空字符

grep过滤空格 grep命令过滤多个条件_服务器_03


grep过滤空格 grep命令过滤多个条件_linux_04

grep常用语法

  • 通过模式对文件内容进行查找
  • 查找 例子如下: grep mail /etc/passwd
  • 想知道查找内容是哪一行加-n: grep -n mail /etc/passwd
  • 管道操作符 |
  • 将管道操作符左边命令的输出作为右边命令的输入
  • cat /etc/passwd | grep root
  • 例如 cat 1.txt | grep 5.6
  • ls -la | grep ^d 指以d开头的字符串
  • cat /etc/passwd | grep ^r
  • ls -la | gerp [1] 指除了以d开头之外的所有内容
  • grep “张三” filename | grep “李四”
  • 管道符|的优点是可以多级筛选,缩小范围
  • ls -la | grep ^d
  • 查询当前目录下以d开头的内容
  • ls -la | grep[2]
  • 查询目录不以d开头的内容
  • -c 统计复合结果条件的行数
  • grep -c “INSERT” agilenone.sql
  • 统计agileone中insert有几行
  • -n 查看行数
  • grep -n “INSERT” agileone.sql
  • 在显示符合样式的那一行之前,标示出该行的列数编号。
  • grep ‘^*’ file
  • 查找显示所有以"*"打头的行
  • -v 看除了insert之外剩余的内容
  • grep -v “INSERT” agileone.sql
  • 查看除了ls之外(-v)的行。并显示行号(-n)cat /etc/passwd | grep -v -n ls
  • 文件传入
  • 安装: yum -y install lrzsz
  • 然后输入: rz
  • 该方法只适用于xshell终端
  • 区分大小写查找
  • 列出大小写都存在的关键字(soup):grep -i soup hello
  • soup是要查找的关键字内容
  • hello是文件
  • 只查看大写的关键字(Soup):grep Soup hello
  • Soup是要查找的大写关键字内容
  • hello是文件
  • 精确查找,例如需要查找483和484这两个数字
  • grep “48[34]” hello
  • 括号内的关键字会单独和括号前的关键字组合查找
  • 得出的结果查找483和484
  • hello是文件
  • 通配符
  • grep “I…DB*” agileone.sql 寻找以I开头,以DB结尾的内容,然后中间几个点,代表中间省略几个字母
  • grep '" ’ agileone.sql 查询内容为双引号,必须加上转义