grep 是一个很常见也很常用的命令,他最重要的功能就是进行字符串数据的对比,然后将符合用户需求的字符串打印出来.需要说明是grep在数据中查找一个字符串时,是以整行为单位来进行数据的选取的.
语法:
grep [-A] [-B] [–color=auto] ‘搜寻字符串’ filename
参数:
-A : 后面可加数字,为after的意思,除了列出的该行,后去的n行也列出来;
-B : 后面可加数字,为befer的意思,除了列出的该行,前面的n行也列出来;
–color=auto :可将正确的那个选取数据列出颜色;
其他选项:
-a : 将binary文件以text文件的方式搜寻数据;
-c : 计算找到’搜寻字符串’的次数;
-i : 忽略大小写的不同,所以大小写视为相同;
-n : 顺便输出行号;
-v : 反向选择,亦即显示出没有’搜寻字符串’ 内容的那一行;
(1)dmesg 列出核心信息,再以grep 找出含有eth那行,要将关键字显色,且加上行号来表示:
[root@sqj2015 ~]# dmesg | grep -n –color=auto ‘eth’
462:e1000 0000:00:03.0: eth0: (PCI:33MHz:32-bit) 00:16:3c:9c:f2:d9
463:e1000 0000:00:03.0: eth0: Intel(R) PRO/1000 Network Connection
471:ADDRCONF(NETDEV_UP): eth0: link is not ready
472:e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
473:ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
474:eth0: no IPv6 routers present
在关键字显示方面.可以使用–color=auto参数,这可是一个很不错的功能,但是如果每次使用grep都得自行加上–color=auto又显的很麻烦,此时那个很好用的alias就得来处理一下啦!你可以在~/.bashrc 内加上”alias grep=’grep –color=auto ‘ ” 再以”source ~/.bashrc”来立即生效即可!这样每次运行grep它都会自动帮你加上颜色显示啦!
(2)在关键字所在行的前3行与后2行也一起显示出来:
[root@sqj2015 ~]# dmesg | grep -n -A2 -B3 –color=auto ‘eth0’
459-ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 11
460-e1000 0000:00:03.0: PCI INT A -> Link[LNKC] -> GSI 11 (level, high) -> IRQ 11
461-e1000 0000:00:03.0: setting latency timer to 64
462:e1000 0000:00:03.0: eth0: (PCI:33MHz:32-bit) 00:16:3c:9c:f2:d9
463:e1000 0000:00:03.0: eth0: Intel(R) PRO/1000 Network Connection
464-Adding 524280k swap on /dev/vda2. Priority:-1 extents:1 across:524280k
465-SELinux: initialized (dev binfmt_misc, type binfmt_misc), uses genfs_contexts