文本三剑客之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的主要内容,如果未能解决你的问题,请参考以下文章