AIX中grep命令介绍


AIX中grep命令介绍
 
[plain]   www.2cto.com  
grep三种变形  
1.grep:标准命令,查找文本,可使用正则表达式。  
2.egrep:扩展grep,支持基本及扩展的正则表达式,但不支持\p模式范围的应用。  
3.fgrep:快速grep,允许查找字符串而不是一个模式。  
  
在grep命令中,输入字符串参数时,最好将其用双引号括起来。  
grep命令选项:  
-c:只输出匹配行数  
-i:不区分大小写(只适用单字符)  
-h:查询多个文件时,不显示文件名  
-l:查询多文件时,只输出包含匹配字符的文件名  
-n:显示匹配行及行号  
-s:不显示不存在或无匹配文本的错误信息  
-v:显示不包含匹配文件的所有行  
  
查询多个文件:grep "sort" *.doc  
在所有文件中,查询"sort it":grep "sort it" *  
  
查看data.f文件的内容  
pg data.f  
48    Dec     3BC1997   LPSX    68.00   LVX2A  138  
483   Sept    5AP1996   USP     65.00   LVX2C  189  
47    Otc     3Z1998    LPSX    43.00   KVM9D  512  
219   DEC     2CC1999   CAD     23.00   PLV2C  68  
484   nov     7PA1998   CAD     49.00   PLV2C  234  
483   may     5PA1998   USP     37.00   KVM9D  644  
216   sept    3ZL1998   USP     86.00   KVM9E  234  
  
包含“48”的行数:  
grep -c "48" data.f  
4  
  
包含“48”的所有行:  
grep "48" data.f  
48    Dec     3BC1997   LPSX    68.00   LVX2A  138  
483   Sept    5AP1996   USP     65.00   LVX2C  189  
484   nov     7PA1998   CAD     49.00   PLV2C  234  
483   may     5PA1998   USP     37.00   KVM9D  644  
  
显示匹配行的行号:  
grep -n "48" data.f  
1:48    Dec     3BC1997   LPSX    68.00   LVX2A  138  
2:483   Sept    5AP1996   USP     65.00   LVX2C  189  
5:484   nov     7PA1998   CAD     49.00   PLV2C  234  
6:483   may     5PA1998   USP     37.00   KVM9D  644  
  
显示不包含“48”的行:  
grep -v "48" data.f  
47    Otc     3Z1998    LPSX    43.00   KVM9D  512  
219   DEC     2CC1999   CAD     23.00   PLV2C  68  
216   sept    3ZL1998   USP     86.00   KVM9E  234  
  
忽略大小写:  
grep -i "sept" data.f  
483   Sept    5AP1996   USP     65.00   LVX2C  189  
216   sept    3ZL1998   USP     86.00   KVM9E  234  
  
grep和正则表达式:  
1.不匹配行首:  
grep '^[^48]' data.f  
219   DEC     2CC1999   CAD     23.00   PLV2C  68  
216   sept    3ZL1998   USP     86.00   KVM9E  234  
2.模式范围:  
grep '48[34]' data.f  
483   Sept    5AP1996   USP     65.00   LVX2C  189  
484   nov     7PA1998   CAD     49.00   PLV2C  234  
483   may     5PA1998   USP     37.00   KVM9D  644  
3.大小写  
grep '[Ss]ept' data.f  
483   Sept    5AP1996   USP     65.00   LVX2C  189  
216   sept    3ZL1998   USP     86.00   KVM9E  234  
4.匹配任意字符  
  K后面3个字符,然后接着D:  
grep 'K...D' data.f  
47    Otc     3Z1998    LPSX    43.00   KVM9D  512  
483   may     5PA1998   USP     37.00   KVM9D  644  
  K后面跟着2个字符,然后接着9:  
grep 'K.\{2\}9' data.f  
47    Otc     3Z1998    LPSX    43.00   KVM9D  512  
483   may     5PA1998   USP     37.00   KVM9D  644  
216   sept    3ZL1998   USP     86.00   KVM9E  234  
  头2个字符为大写字母,以C结尾,中间2个任意字符:  
grep '[A-Z][A-Z]..C' data.f  
483   Sept    5AP1996   USP     65.00   LVX2C  189  
219   DEC     2CC1999   CAD     23.00   PLV2C  68  
484   nov     7PA1998   CAD     49.00   PLV2C  234  
    
grep '5..199[6,8]' data.f  
483   Sept    5AP1996   USP     65.00   LVX2C  189  
483   may     5PA1998   USP     37.00   KVM9D  644  
  匹配一行中的任意位置:  
grep '[0-9][0-5][0-6]' data.f  
47    Otc     3Z1998    LPSX    43.00   KVM9D  512  
484   nov     7PA1998   CAD     49.00   PLV2C  234  
483   may     5PA1998   USP     37.00   KVM9D  644  
216   sept    3ZL1998   USP     86.00   KVM9E  234  
  匹配行首的位置:  
grep '^[0-9][0-5][0-6]' data.f  
216   sept    3ZL1998   USP     86.00   KVM9E  234  
  至少出现n次:  
grep '4\{2,\}' data.f  
483   may     5PA1998   USP     37.00   KVM9D  644  
5.使用grep匹配“与”或者“或”模式  
-E:允许使用扩展模式匹配  
grep -E '219|216' data.f  
219   DEC     2CC1999   CAD     23.00   PLV2C  68  
216   sept    3ZL1998   USP     86.00   KVM9E  234  
  空行:  
[开发]/usr/xxxx/ytcclb>grep '^$' info.txt  
  
[开发]/usr/xxxx/ytcclb>  
  匹配IP地址:  
grep '[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}' *.address  
  
类  
类名及其等价的正则表达式  
—————————————————————————————  
    类               等价的正则表达式  
[[:upper:]]         [A-Z]  
[[:lower:]]             [a-z]  
[[:digit:]]             [0-9]  
[[:alnum:]]         [0-9a-zA-Z]  
[[:space:]]         空格或tab键  
[[:alpha:]]         [a-zA-Z]  
——————————————————————————————  
  
系统grep命令  
结合管道命令,|,将左边的输出结果作为右边命令的输入  
查找目录列表中的列表:ls -l | grep '^d'  
查询目录中不包含目录的所有文件:ls -l | grep '^[^d]'  
[/home/xxxx/ytcxx]> ls -l | grep '^d.....x..x'  
drwxr-xr-x    4 xxxx   db2iadm1        256 Nov 15 2010  cdxx  
drwxr-xr-x    2 xxxx   db2iadm1       4096 Dec  6 2006  incl  
drwxr-xr-x    2 xxxx   db2iadm1        256 Nov 25 2010  src  
drwxr-xr-x    2 xxxx   db2iadm1        256 Nov 25 2010  tbin  
drwxr-xr-x    3 xxxx   db2iadm1       4096 Jul  5 2011  test  
drwxr-xr-x    5 xxxx   db2iadm1        256 Sep 10 2010  tmp  
  
ps命令,查询洗头膏上运行的进程。  
[/home/xxxx/ytcclb]> ps ax | grep "named"  
 376944  pts/0 A     0:00 grep named  
[/home/xxxx/ytcclb]> ps -ef | grep "named"  
  xxxx 573474 557246   0 10:20:42  pts/0  0:00 grep named  
字符串使用grep命令:  
STR="Mary Joe Peter Pauline"  
echo $STR | grep "Mary"  
Mary Joe Peter Pauline  
  
egrep:expression或extended grep,接受所有的正则表达式。  
egrep '(3ZL|2CC)' data.f  
219   DEC     2CC1999   CAD     23.00   PLV2C  68  
216   sept    3ZL1998   USP     86.00   KVM9E  234  
 

相关内容

    暂无相关文章