linux grep用法大全
原文:http://orchidllh.itpub.net/post/4020/24280
在Unix中经常会用到grep去选取所需要的信息,用好grep有时可以到达意想不到的效果。
Grep : g (globally) search for a re (regular expression_r_r ) and p(print ) the results.
1、参数:
-I:忽略大小写
-c:打印匹配的行数
-l:从多个文件中查找包含匹配项
-v:查找不包含匹配项的行
-n:打印包含匹配项的行和行标2、RE(正则表达式)
\忽略正则表达式中特殊字符的原有含义
^匹配正则表达式的开始行
$匹配正则表达式的结束行
\<从匹配正则表达式的行开始
\>;到匹配正则表达式的行结束
[]单个字符;如[A]即A符合要求
[-]范围;如[A-Z]即A,B,C一直到Z都符合要求
.所有的单个字符
* 所有字符,长度可以为0# cat zhao.conf(显示我们所查文件的内容)
48Dec3BC1997LPSX68.00LVX2A138
483Sept5AP1996USP65.00LVX2C189
47Oct3ZL1998LPSX43.00KVM9D512
219dec2CC1999CAD23.00PLV2C68
484nov7PL1996CAD49.00PLV2C234
487may5PA1998USP37.00KVM9D644
471 May 7Zh1999 UDP 37.00 KV30D 643# grep -c "48" zhao.conf(统计所有以“48”字符开头的行有多少)
# grep -i "May" zhao.conf(不区分大小写查找“May”所有的行)
487may5PA1998USP37.00KVM9D644
471 May 7Zh1999 UDP 37.00 KV30D 643# grep -n "48" zhao.conf(显示行号;显示匹配字符“48”所在的行的行号)
1:48Dec3BC1997LPSX68.00LVX2A138
2:483Sept5AP1996USP65.00LVX2C189
5:484nov7PL1996CAD49.00PLV2C234
6:487 may 5PA1998 USP 37.00 KVM9D 644# grep -ni "may" zhao.conf(显示行号;显示匹配字符“may”所在的行的行号,不区分大小写)
# grep -v "48" zhao.conf(显示输出没有字符“48”所有的行)
47Oct3ZL1998LPSX43.00KVM9D512
219dec2CC1999CAD23.00PLV2C68
471 May 7Zh1999 UDP 37.00 KV30D 643# grep "471" zhao.conf(显示输出字符“471”所在的行)471 May 7Zh1999 UDP 37.00 KV30D 643
# grep "48>" zhao.conf(精确显示输出字符“48”所在的行)48 Dec 3BC1997 LPSX 68.00 LVX2A 138
# grep "48<tab>"zhao.conf(显示输出以字符“48”开头,并在字符“48”后是一个tab键所在的行
注:tab键,安一下tab键即可;和精确显示输出的结果是相同的)
48 Dec 3BC1997 LPSX 68.00 LVX2A 138# grep "48[34]"zhao.conf(显示输出以字符“48”开头,第三个字符是“3”或是“4”的所有的行)
483Sept5AP1996USP65.00LVX2C189
484 nov 7PL1996 CAD 49.00 PLV2C 234# grep '48[34]'zhao.conf(注意使用单引号(‘’)和使用双引号(“”)在Solaris8中输出的结果是一样的;
即:单引号、和双引号是通用的,只要你养成一种习惯就好)
483Sept5AP1996USP65.00LVX2C189
484 nov 7PL1996 CAD 49.00 PLV2C 234# grep "^[^48]" zhao.conf(显示输出行首不是字符“48”的行)219 dec 2CC1999 CAD 23.00 PLV2C 68
# grep "[Mm]ay"zhao.conf(设置大小写查找:显示输出第一个字符以“M”或“m”开头,以字符“ay”结束的行)
487may5PA1998USP37.00KVM9D644
471 May 7Zh1999 UDP 37.00 KV30D 643# cat zhao.conf(再次显示我们所使用的文件的内容)
48Dec3BC1997LPSX68.00LVX2A138
483Sept5AP1996USP65.00LVX2C189
47Oct3ZL1998LPSX43.00KVM9D512
219dec2CC1999CAD23.00PLV2C68
484nov7PL1996CAD49.00PLV2C234
487may5PA1998USP37.00KVM9D644
471 May 7Zh1999 UDP 37.00 KV30D 643# grep "K...D"zhao.conf(显示输出第一个字符是“K”,第二、三、四是任意字符,第五个字符是“D”所在的行)
47Oct3ZL1998LPSX43.00KVM9D512
487may5PA1998USP37.00KVM9D644
471 May 7Zh1999 UDP 37.00 KV30D 643# grep "[A-Z][A-Z][A-Z][9]D"zhao.conf(显示输出第一个字符的范围是“A-D”,第二个字符的范围是“A-D”,
第三个字符的范围是“A-D”,第四个字符是“9”,第五个字符的是“D”,所有的行:已知所查字符串的长度为5位)
47Oct3ZL1998LPSX43.00KVM9D512
487 may 5PA1998 USP 37.00 KVM9D 644# grep "5..1998" zhao.conf487 may 5PA1998 USP 37.00 KVM9D 644
# grep "[35]..1998"zhao.conf(显示输出第一个字符是“3”或“5”,第二、三个字符是任意,以1998结尾的所有行;已知所查字符串的长度是7位)
47Oct3ZL1998LPSX43.00KVM9D512
487may5PA1998USP37.00KVM9D644
## grep "4{2,}" zhao.conf(模式出现几率查找:显示输出字符“4”至少重复出现两次的所有行)487 may 5PA1998 USP 37.00 KVM9D 644
# grep "9{3,}" zhao.conf(模式出现几率查找:显示输出字符“9”至少重复出现三次的所有行)
219dec2CC1999CAD23.00PLV2C68
471 May 7Zh1999 UDP 37.00 KV30D 643# grep "9{2,3}" zhao.conf(模式出现几率查找:显示输出字符“9”重复出现的次数在一定范围内(重复出现2次或3次)所有行)
48Dec3BC1997LPSX68.00LVX2A138
483Sept5AP1996USP65.00LVX2C189
47Oct3ZL1998LPSX43.00KVM9D512
219dec2CC1999CAD23.00PLV2C68
484nov7PL1996CAD49.00PLV2C234
487may5PA1998USP37.00KVM9D644
471 May 7Zh1999 UDP 37.00 KV30D 643# grep -n "^$" zhao.conf(显示输出空行的行号)