Linux下Shell文本处理三剑客--grep

1、grep

过滤来自一个文件或标准输入匹配模式内容。

除了grep外,还有egrep、fgrep。egrep是grep的扩展,相当于grep -E。fgrep相当于grep -f,用的少。

Usage: grep [OPTION]… PATTERN [FILE]…

支持的正则描述
-E,–extended-regexp模式是扩展正则表达式(ERE)
-P,–perl-regexp模式是Perl正则表达式
-e,–regexp=PATTERN使用模式匹配,可指定多个模式匹配
-f,–file=FILE从文件每一行获取匹配模式
-i,–ignore-case忽略大小写
-w,–word-regexp模式匹配整个单词
-x,–line-regexp模式匹配整行
-v,–invert-match打印不匹配的行
输出控制描述
-m,–max-count=NUM输出匹配的结果num数
-n,–line-number打印行号
-H,–with-filename打印每个匹配的文件名
-h,–no-filename不输出文件名
-o,–only-matching只打印匹配的内容
-q,–quiet不输出正常信息
-s, --no-messages不输出错误信息
-r,–recursive递归目录
-c,–count只打印每个文件匹配的行数
–include=FILE_PATTERN–exclude=FILE_PATTERN–exclude-from=FILE–exclude-dir=PATTERN只检索匹配的文件跳过匹配的文件跳过匹配的文件,来自文件模式跳过匹配的目录
内容行控制描述
-B,–before-context=NUM打印匹配的前几行
-A,–after-context=NUM打印匹配的后几行
-C,–context=NUM打印匹配的前后几行
–color[=WHEN],匹配的字体颜色
示例:

1)输出b文件中在a文件相同的行
[root@ chenc01 ~]# grep -f a b

2)输出b文件中在a文件不同的行
[root@ chenc01 ~]# grep -v -f a b

3) 匹配多个模式
[root@ chenc01 ~]# echo "a bc de" |xargs -n1 |grep -e 'a' -e 'bc'
a
bc

4)去除空格http.conf文件空行或开头#号的行
[root@ chenc01 ~]# grep -E -v "^$|^#" /etc/httpd/conf/httpd.conf

5) 匹配开头不分大小写的单词
[root@ chenc01 ~]# echo "A a b c" |xargs -n1 |grep -i a[root@ chenc01 ~]# echo "A a b c" |xargs -n1 |grep '[Aa]'
A
a

6)只显示匹配的字符串
[root@ chenc01 ~]# echo "this is a test" |grep -o 'is'
is
is

7)输出匹配的前五个结果
[root@ chenc01 ~]# seq 1 20 |grep -m 5 -E '[0-9]{2}'
10
11
12
13
14

8)统计匹配多少行
[root@ chenc01 ~]# seq 1 20 |grep -c -E '[0-9]{2}'
11

9) 匹配b字符开头的行
[root@ chenc01 ~]# echo "a bc de" |xargs -n1 |grep '^b'
bc

10) 匹配de字符结尾的行并输出匹配的行
[root@ chenc01 ~]# echo "a ab abc abcd abcde" |xargs -n1 |grep -n 'de$'
5:abcde

11) 递归搜索/etc目录下包含ip的conf后缀文件
[root@ chenc01 ~]# grep -r '192.167.1.1' /etc --include *.conf

12) 排除搜索bak后缀的文件
[root@ chenc01 ~]# grep -r '192.167.1.1' /opt --exclude *.bak

13) 排除来自file中的文件
[root@ chenc01 ~]# grep -r '192.167.1.1' /opt --exclude-from file

14) 匹配41或42的数字
[root@ chenc01 ~]# seq 41 45 |grep -E '4[12]'
41
42

15) 匹配至少2个字符
[root@ chenc01 ~]# seq 13 |grep -E '[0-9]{2}'
10
11
12
13

16) 匹配至少2个字符的单词,最多3个字符的单词
[root@ chenc01 ~]# echo "a ab abc abcd abcde" |xargs -n1 |grep -E -w -o '[a-z]{2,3}'
ab
abc

17) 匹配所有IP
[root@ chenc01 ~]# ifconfig |grep -E -o "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"

18) 打印匹配结果及后3行
[root@ chenc01 ~]# seq 1 10 |grep 5 -A 3
5
6
7
8

19) 打印匹配结果及前3行
[root@ chenc01 ~]# seq 1 10 |grep 5 -B 3
2
3
4
5

20) 打印匹配结果及前后3行
[root@ chenc01 ~]# seq 1 10 |grep 5 -C 3
2
3
4
5
6
7
8

21) 不显示输出
不显示错误输出:
[root@ chenc01 ~]# grep 'a' abc

grep: abc: No such file or directory

[root@ chenc01 ~]# grep -s 'a' abc
[root@ chenc01 ~]# echo $?
2

不显示正常输出:
[root@ chenc01 ~]# grep -q 'a' a.txt

grep支持上一章的基础和扩展正则表达式字符。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值