grep的高级参数

来源:互联网 发布:up to u网络天什么意思 编辑:程序博客网 时间:2024/06/07 02:26

继续鸟哥的linux学习


1 grep [-A] [-B] [ -- color=auto] "搜寻的字符串"  filename


参数 : -A 后面加数字,为after的意思,除了列出该行外,后面n行也列出来

 -B 后面加数字,为berore,除了列出该行外,前面n行也列出来


例如  :  dmesg 列出内核信息,用grep找不包含eth的哪行


e1000 0000:02:01.0: eth0: (PCI:66MHz:32-bit) 00:0c:29:6f:23:dc
e1000 0000:02:01.0: eth0: Intel(R) PRO/1000 Network Connection
e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
eth0: no IPv6 routers present
8021q: adding VLAN 0 to HW filter on device eth0
eth0: no IPv6 routers present
[root@localhost ~]# 


包含eth的都找出来啦,并且是红色的


例如 : 把关键词所在的行的前三行和后三行都输出来



另外 grep每次加上 --color=auto很麻烦,所以使用alias别名

在 ~/.bashrc 内加上alias grep='grep --color=auto'

再 source~/.bashrc 来立即生效


练习:

 查找特定的字符串


grep -n '字符串' test.txt

-n        显示行号

'字符串' 要匹配的字符串


若是反向选择,则加上 v

grep -vn '字符串' test.txt


不区分大小写   参数   i

----------------------------------------------------------------

[] 里面是可以多选则的,代表[]中的一个字符


例如

grep -n '人[们啊]' test.txt


若不想要某个字符开头的则使用  ^ (在[]内使用)


例如不要男开头的

grep -n '[]^男]人' test.txt


匹配了所有的人,但是不包含男人

^与[]结合

grep -n '[^男女]人' test.txt

------------------------------------------------------------------

行首与行尾字符   ^行首    $行尾

例子:以    ^我   开头 

grep -n '^我' test.txt


以 我$ 结尾

grep -n '我$' test.txt


------------------------------------------------------------------

例如 


找到空白行


grep -n '^$' test.txt


今天就到这了,明天继续