文本三剑客之grep

Posted 喝茶等下班

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文本三剑客之grep相关的知识,希望对你有一定的参考价值。

1.

-E 扩展正则表达式

-P 模式是perl正则表达式

-e 使用模式匹配,可指定多个模式

-f 从文件中获取模式

-i 忽略大小写

-w 模式匹配整个单词

-x 模式匹配整行

输出控制

-m num匹配最多num个后就停止

-n 打印行号

-o 只打印匹配的内容

-q,--quiet 不输出正常信息

-s,--no-messages 不输出错误信息

-r 递归目录

-c,--count 只打印每个文件匹配的行数

内容行控制

-B,打印匹配的前几行

-A,打印后几行

-C,打印前后同行

2.

输出b文件中在a文件相同的行

[root@study ~]# grep -f a b

输出b文件中在a文件不同的行

[root@study ~]# grep -vf a b

匹配多个模式

[root@study ~]# echo "a bc de"|xargs -n1|grep -e a -e bc
a
bc

统计匹配多少行

[root@study ~]# seq 1 20 |grep -c -E [0-9]2
11

递归搜索/etc目录下,包含192.168.31.1的文件

[root@study ~]# grep -r 192.168.31.1 /etc
/etc/sysconfig/network-scripts/ifcfg-ens33:GATEWAY="192.168.31.1"

在上面基础上再加个查找条件,只搜索.conf后缀的文件

[root@study ~]# grep -r 192.168.31.1 /etc --include *.conf

排除后缀为.bak文件

[root@study ~]# grep -r 192.168.31.1 /etc --exclude *.bak
/etc/sysconfig/network-scripts/ifcfg-ens33:GATEWAY="192.168.31.1"

不在/etc/passwd中查找

[root@study ~]# grep -r root /etc --exclude-from /etc/passwd
/etc/grub.d/00_header:datarootdir="/usr/share"
/etc/grub.d/00_header:export TEXTDOMAINDIR="$datarootdir/locale"
/etc/grub.d/00_header:if loadfont `make_system_path_relative_to_its_root "$GRUB_FONT"` ; then
/etc/grub.d/00_header: font="`make_system_path_relative_to_its_root "$font_path"`"
###输出内容省略

匹配所有IP

[root@study ~]# ifconfig |grep -E -o [0-9]1,3\\.[0-9]1,3\\.[0-9]1,3\\.[0-9]1,3
192.168.31.2
255.255.255.0
192.168.31.255
127.0.0.1
255.0.0.0

打印匹配结果后三行

[root@study ~]# seq 1 10 |grep 5 -A 3
5
6
7
8

不输出错误信息

[root@study ~]# grep a abc
grep: abc: 没有那个文件或目录
[root@study ~]# grep -s a abc

不输出正常信息(静默模式)

[root@study ~]# grep -q root /etc/passwd
[root@study ~]# grep -q root /etc/passwd1
grep: /etc/passwd1: 没有那个文件或目录






以上是关于文本三剑客之grep的主要内容,如果未能解决你的问题,请参考以下文章

文本处理三剑客之 grep

文本处理三剑客之GREP

Linux文本处理三剑客之grep

Linux文本处理工具三剑客之grep

文本处理三剑客之---grep系

文本处理三剑客之grep