基本格式
- 要查找的字符串以双引号括起来,单引号也可以
- “^……”表示以……开头,“……$”表示以……结尾
- “^$”表示空行示例:
1)在/etc/passwd文件中,检索出含有“alice"的行
[root@localhost ~]# grep alice /etc/passwd alice:x:1002:1003::/home/alice:/bin/bash 复制代码
网络异常,图片无法展示
|
2)在/etc/passwd文件中检索“alice",只输出“alice"
[root@localhost ~]# grep -o alice /etc/passwd alice alice 复制代码
网络异常,图片无法展示
|
3)在多个文件中检索”alice"
[root@localhost ~]# grep alice /etc/passwd /etc/group /etc/fstab /etc/passwd:alice:x:1002:1003::/home/alice:/bin/bash /etc/group:alice:x:1003: 复制代码
网络异常,图片无法展示
|
4)使用 -l 参数列出包含指定样式的文件的文件名
[root@localhost ~]# grep -l alice /etc/passwd /etc/group /etc/fstab /etc/passwd /etc/group 复制代码
网络异常,图片无法展示
|
5) 使用-n参数,在文件中查找指定样式并显示匹配行的行号
[root@localhost ~]# grep -n bash /etc/passwd //检索出包含“bash"的行并显示行号 1:root:x:0:0:root:/root:/bin/bash 41:yuji:x:1000:1000:yuji:/home/yuji:/bin/bash 42:user01:x:1001:1001::/home/user01:/bin/bash 43:alice:x:1002:1003::/home/alice:/bin/bash 44:jack:x:1003:1004::/home/jack:/bin/bash 45:zhangsan:x:1004:1005::/home/zhangsan:/bin/bash 复制代码
网络异常,图片无法展示
|
6)使用-v反向查找,输出与查找条件不相符的行
[root@localhost ~]# grep -v nologin /etc/passwd //检索出不含”nologin"的行 root:x:0:0:root:/root:/bin/bash sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt yuji:x:1000:1000:yuji:/home/yuji:/bin/bash user01:x:1001:1001::/home/user01:/bin/bash alice:x:1002:1003::/home/alice:/bin/bash jack:x:1003:1004::/home/jack:/bin/bash zhangsan:x:1004:1005::/home/zhangsan:/bin/bash 复制代码
7)使用-i "^a",检索出以a开头的行,且不区分大小写
[root@localhost ~]# grep -i "^a" /etc/passwd adm:x:3:4:adm:/var/adm:/sbin/nologin abrt:x:173:173::/etc/abrt:/sbin/nologin avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin alice:x:1002:1003::/home/alice:/bin/bash Amy:x:1005:1006::/home/Amy:/bin/bash 复制代码
网络异常,图片无法展示
|
8)使用"h$",检索出以h结尾的行
[root@localhost ~]# grep "h$" /etc/passwd root:x:0:0:root:/root:/bin/bash yuji:x:1000:1000:yuji:/home/yuji:/bin/bash user01:x:1001:1001::/home/user01:/bin/bash alice:x:1002:1003::/home/alice:/bin/bash jack:x:1003:1004::/home/jack:/bin/bash zhangsan:x:1004:1005::/home/zhangsan:/bin/bash Amy:x:1005:1006::/home/Amy:/bin/bash 复制代码
网络异常,图片无法展示
|
9)使用-v "^$" 过滤出非空行
[root@localhost test]# cat 123.txt //查看123.txt文件内容 111 222 aaa [root@localhost test]# grep -v "^$" 123.txt //过滤出非空行 111 222 aaa [root@localhost ~]# cat 123.txt |grep -v '^$' >test.txt //将非空行写入到test.txt文件 [root@localhost test]# cat test.txt //查看test.txt 111 222 aaa 复制代码
10)使用通配符和管道符,过滤出IP地址
[root@localhost ~]#ifconfig ens33 |grep netmask|grep -o "[0-9][0-9][0-9].[0-9][0-9][0-9].[0-9][0-9].[0-9][0-9][0-9]"|head -n 1 //过滤出IP地址 192.168.91.100 [root@localhost ~]# ifconfig ens33 |grep -o "[0-9]+.[0-9]+.[0-9]+.[0-9]+" //过滤出IP地址、子网掩码、广播地址 192.168.91.100 255.255.255.0 192.168.91.255 [root@localhost ~]# ifconfig ens33 |grep -o "[0-9]+.[0-9]+.[0-9]+.[0-9]+"|head -1 //过滤出IP地址 192.168.91.100 复制代码
11)-f 对比两个文件的相同行
[root@localhost ~]# cat 1.txt 111 333 [root@localhost ~]# cat 2.txt 111 222 3 [root@localhost ~]# grep -f 1.txt 2.txt //过滤出两个文件的相同行 111 复制代码
12)-e 多条件”或“的查询
[root@localhost test]# cat file01.txt 11 33 111222 [root@localhost test]# grep -e 1 -e 2 file01.txt //检索出包含1或2的行 11 111222 复制代码
13) 使用 -E 'pattern1.*pattern2',多条件”且“的查询
[root@localhost test]# grep -E "1.*2" file01.txt //检索出包含1且包含2的行 111222 复制代码
14)在指定目录内检索出含有指定内容的文件名:
# 列出/home目录下(包括其子目录内)含有“root"内容的文件名,要求精确匹配。 [root@localhost ~]# grep -R -w -l "root" /home //-R在目录内递归查找,-w表示精确匹配,-l列出文件内容符合指定样式的文件名称 /home/yuji2/.cache/imsettings/log /home/yuji2/.cache/tracker/meta.db /home/yuji2/.cache/tracker/meta.db-wal # 列出/home目录下(包括其子目录内)含有“root"内容的文件名,不要求精确匹配。 [root@localhost ~]# grep -R -l "root" /home /home/yuji2/.cache/imsettings/log /home/yuji2/.cache/tracker/meta.db /home/yuji2/.cache/tracker/meta.db-wal /home/yuji2/.cache/tracker/ontologies.gvdb /home/yuji2/.local/share/tracker/data/tracker-store.ontology.journal 复制代码
网络异常,图片无法展示
|
2 统计文件
命令wc(word count)
命令格式:
wc [选项]... 目标文件.. (不加选项,则默认统计行数、单词个数、字节数三者)
统计列数,wc本身就是参数:
- -l:统计行数
- -w:统计单词个数
- -c:统计字节数
[root@localhost test]# cat 1.txt //查看文件内容 111 222 aaa [root@localhost test]# wc -l 1.txt //统计行数,注意空行也会被统计 4 1.txt [root@localhost test]# wc -w 1.txt //统计单词数 3 1.txt [root@localhost test]# wc -c 1.txt //统计字节数,注意换行符也会被统计 13 1.txt [root@localhost test]# wc 1.txt //不指定选项,默认lwc都显示 4 3 13 1.txt