linux-grep一些高级参数

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