grep命令

grep命令grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来;grep搜索的结果被送到屏幕,不影响原文件内容。Unix的grep家族包括grep、egrep和fgrep。egrep表示扩展的grep,相比grep支持更多的元字符,"grep -E"相当于egrep;fgrep不支持元字符,但是搜索速度更快。

用法: grep [OPTIONS] PATTERN [FILE…]

    grep [OPTIONS] [-e PATTERN | -f FILE] [FILE…]

常用选项:

-v:显示不能被pattern匹配到的行

例如:不显示/etc/fstab文件的注释信息:

~]# grep -v "^#" /etc/fstab
UUID=a87091f4-347b-41da-9983-a8f193e1206e /                    ext4    defaults        1 1
UUID=d0bb97dd-0370-4e9f-bb38-ecf580b2761c /boot                ext4    defaults        1 2
UUID=77fc1474-4b1d-4e28-be0a-e81dd21bef19 swap                 swap    default

-i:忽略字符大小写

-n:显示匹配行号

-c:统计匹配行数

-o:仅显示匹配到的字符串

例如:查找/etc/fstab文件中的“defaults”关键字

~]# grep -o "defaults" /etc/fstab
defaults
defaults
defaults
defaults
defaults
defaults

-A NUM:显示后NUM行

例如:显示匹配到“ext4”的后两行

~]# grep -n -A2 "ext4" /etc/fstab
9:UUID=a87091f4-347b-41da-9983-a8f193e1206e /                     ext4    defaults        1 1
10:UUID=d0bb97dd-0370-4e9f-bb38-ecf580b2761c /boot                 ext4    defaults        1 2
11-UUID=77fc1474-4b1d-4e28-be0a-e81dd21bef19 swap                  swap    defaults        0 0
12-tmpfs                   /dev/shm              tmpfs   defaults        0 0

-B NUM:显示前NUM行

-C NUM:前后各NUM行

例如:显示匹配到“ext4”的前后各一行

~]# grep -n -C1 "ext4" /etc/fstab
8-#
9:UUID=a87091f4-347b-41da-9983-a8f193e1206e /                     ext4    defaults        1 1
10:UUID=d0bb97dd-0370-4e9f-bb38-ecf580b2761c /boot                 ext4    defaults        1 2
11-UUID=77fc1474-4b1d-4e28-be0a-e81dd21bef19 swap                  swap    defaults        0 0

-q:不显示任何信息

-w:显示匹配到字符串的行

例如:查找/etc/fstab文件中有“defaults”关键字的行

~]# grep -w "defaults" /etc/fstab
UUID=a87091f4-347b-41da-9983-a8f193e1206e /                     ext4    defaults        1 1
UUID=d0bb97dd-0370-4e9f-bb38-ecf580b2761c /boot                 ext4    defaults        1 2
UUID=77fc1474-4b1d-4e28-be0a-e81dd21bef19 swap                  swap    defaults        0 0
tmpfs                   /dev/shm              tmpfs   defaults        0 0
sysfs                   /sys                  sysfs   defaults        0 0
proc                    /proc                 proc    defaults        0 0

-e:实现多个选项的逻辑“或”关系

例如:在/etc/fstab文件中查找“ext4”或者“swap”关键字

~]# grep -e "ext4" -e "swap" /etc/fstab
UUID=a87091f4-347b-41da-9983-a8f193e1206e /                     ext4    defaults        1 1
UUID=d0bb97dd-0370-4e9f-bb38-ecf580b2761c /boot                 ext4    defaults        1 2
UUID=77fc1474-4b1d-4e28-be0a-e81dd21bef19 swap                  swap    defaults        0 0

          -E:使用扩展正则表达式,相当于egrep

原创文章,作者:yilianrenzhendemenbi,如若转载,请注明出处:http://www.178linux.com/30792