grep

载自:http://cache.baidu.com/c?m=9f65cb4a8c8507ed4fece763105392230e54f7256b9696462a838448e4380c075a3ca5e4793f1702ce996b6777ae4d59edf62172405966e8c5dccd179ded9d7d6fdf65&p=cb67c25e92934eaf5ab5c7710e44&user=baidu

grep TestAge 中国软件测试时代+O`U/#{-} wG$jn
1.作用
9a:~'eeK3Z8J    grep命令可以指定文件中搜索特定的内容,并将含有这些内容的行标准输出。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
s0fBa z4t2.格式
4}V {g8?*b.^8z    grep [options]
Y"X_|i3.主要参数
,anCg/q'X%N`Zop[options]主要参数:
#{N#H^'o+wX7?6W-c:只输出匹配行的计数。 TestAge 中国软件测试时代6qi.h.l%k
-I:不区分大小写(只适用于单字符)。
%O3C-E8e K2OY-h:查询多文件时不显示文件名。
0Jr[0y}xs A!J-l:查询多文件时只输出包含匹配字符的文件名。 TestAge 中国软件测试时代 M#h G9{|7v5v6T
-n:显示匹配行及行号。
l `Fzhb%}'o-s:不显示不存在或无匹配文本的错误信息。 TestAge 中国软件测试时代5R o q S2jb7?"v1d*lL
-v:显示不包含匹配文本的所有行。 TestAge 中国软件测试时代R9`6C8K)],X
pattern正则表达式主要参数:
7dO3H9@EM:E/ :忽略正则表达式中特殊字符的原有含义。 TestAge 中国软件测试时代mOz5e4o
^:匹配正则表达式的开始行。
.z#b!G7/5r c'|w5HX,g$: 匹配正则表达式的结束行。
#G {#I#UM.u1~V<:从匹配正则表达式的行开始。
+M_*uz._']h `>:到匹配正则表达式的行结束。
!Q0m'qP*D gk[ ]:单个字符,如[A]即A符合要求 。 TestAge 中国软件测试时代K^/@fy$e:F"d
[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。 TestAge 中国软件测试时代l v~9{4A,X Ge
。:所有的单个字符。
u(S&p j0Wy u-sL3`N* :有字符,长度可以为0。 TestAge 中国软件测试时代:Ak:T}?w
    正则表达式是Linux/Unix系统中非常重要的概念。正则表达式(也称为“regex”或“regexp”)是一个可以描述一类字符串的模式(Pattern)。如果一个字符串可以用某个正则表达式来描述,我们就说这个字符和该正则表达式匹配(Match)。这和DOS中用户可以使用通配符“*”代表任意字符类似。在Linux系统上,正则表达式通常被用来查找文本的模式,以及对文本执行“搜索-替换”操作和其它功能。 TestAge 中国软件测试时代%?E9faG4@;nZ.g
4.应用实例
j$f$G/FDa&Y    查询DNS服务是日常工作之一,这意味着要维护覆盖不同网络的大量IP地址。有时IP地址会超过2000个。如果要查看nnn.nnn网络地址,但是却忘了第二部分中的其余部分,只知到有两个句点,例如nnn nn..。要抽取其中所有nnn.nnn IP地址,使用[0-9 ]{3 }.[0-0。含义是任意数字出现3次,后跟句点,接着是任意数字出现3次,后跟句点。 TestAge 中国软件测试时代[r)QL n2R Q
$grep '[0-9 ]{3 }.[0-0' ipfile
0p1d:OG Dw    补充说明,grep家族还包括fgrep和egrep。fgrep是fix grep,允许查找字符串而不是一个模式;egrep是扩展grep,支持基本及扩展的正则表达式,但不支持q模式范围的应用及与之相对应的一些更加规范的模式。

 

载自:http://cache.baidu.com/c?m=9d78d513d99601f81af9d33e53198d205f1697624fcacd4b2488d40284642c101d3dbfe87c644e5783d27c1050f21641bbad692d645f76aa9ec8894cd6ba852858d2616b2e&p=9b769a43808a1bff57ef856658&user=baidu

功能说明:查找文件里符合条件的字符串。

语  法:grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]

补充说明:grep指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为“-”,则grep指令会从标准输入设备读取数据。

参  数:
  -a或--text   不要忽略二进制的数据。
  -A<显示列数>或--after-context=<显示列数>   除了显示符合范本样式的那一列之外,并显示该列之后的内容。
  -b或--byte-offset   在显示符合范本样式的那一列之前,标示出该列第一个字符的位编号。
  -B<显示列数>或--before-context=<显示列数>   除了显示符合范本样式的那一列之外,并显示该列之前的内容。
  -c或--count   计算符合范本样式的列数。
  -C<显示列数>或--context=<显示列数>或-<显示列数>   除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
  -d<进行动作>或--directories=<进行动作>   当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
  -e<范本样式>或--regexp=<范本样式>   指定字符串做为查找文件内容的范本样式。
  -E或--extended-regexp   将范本样式为延伸的普通表示法来使用。
  -f<范本文件>或--file=<范本文件>   指定范本文件,其内容含有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每列一个范本样式。
  -F或--fixed-regexp   将范本样式视为固定字符串的列表。
  -G或--basic-regexp   将范本样式视为普通的表示法来使用。
  -h或--no-filename   在显示符合范本样式的那一列之前,不标示该列所属的文件名称。
  -H或--with-filename   在显示符合范本样式的那一列之前,表示该列所属的文件名称。
  -i或--ignore-case   忽略字符大小写的差别。
  -l或--file-with-matches   列出文件内容符合指定的范本样式的文件名称。
  -L或--files-without-match   列出文件内容不符合指定的范本样式的文件名称。
  -n或--line-number   在显示符合范本样式的那一列之前,标示出该列的列数编号。
  -q或--quiet或--silent   不显示任何信息。
  -r或--recursive   此参数的效果和指定“-d recurse”参数相同。
  -s或--no-messages   不显示错误信息。
  -v或--revert-match   反转查找。
  -V或--version   显示版本信息。
  -w或--word-regexp   只显示全字符合的列。
  -x或--line-regexp   只显示全列符合的列。
  -y   此参数的效果和指定“-i”参数相同。
  --help   在线帮助。

 

 

 

载自:http://cache.baidu.com/c?m=9f65cb4a8c8507ed4fece7631042843a5a0fd33f69c0d0622e8ec814c023071a0d71e3cc7b75561980c6613706b2495ee8f0347334043db591ca8848dfb893223888506e3643d855578e59f9c413659662&p=82498e15d9c157f00be2953753&user=baidu

grep命令介绍
本文出自:OHaHa的学习心得[ohaha.ks.edu.tw] 作者:蓝色泡泡(panda@ks.edu.tw) (2002-03-15 08:02:00)
 ◎grep -- print lines matching a pattern (将符合样式的该行列出)

 ◎语法: grep [options] 
 PATTERN [FILE...] 
 grep用以在file内文中比对相对应的部分,或是当没有指定档案时, 
 由标准输入中去比对。 在预设的情况下,grep会将符合样式的那一行列出。

         此外,还有两个程式是grep的变化型,egrep及fgrep。          
         其中egrep就等同於grep -E ,fgrep等同於grep -F 。

 ◎参数
    1. -A NUM,--after-context=NUM 
               除了列出符合行之外,并且列出後NUM行。
             
         ex:   $ grep -A 1 panda file 
               (从file中搜寻有panda样式的行,并显示该行的後1行)
                                 
    2. -a或--text  
               grep原本是搜寻文字档,若拿二进位的档案作为搜寻的目标,
               则会显示如下的讯息: Binary file 二进位档名 matches 然後结束。
                  
               若加上-a参数则可将二进位档案视为文字档案搜寻,
               相当於--binary-files=text这个参数。
            
         ex:   (从二进位档案mv中去搜寻panda样式)
               (错误!!!)
               $ grep panda mv 
               Binary file mv matches  
               (这表示此档案有match之处,详见--binary-files=TYPE )
               $
               (正确!!!)
               $ grep -a panda mv 
       
    3. -B NUM,--before-context=NUM
               与 -A NUM 相对,但这此参数是显示除符合行之外
               并显示在它之前的NUM行。        
             
         ex:   (从file中搜寻有panda样式的行,并显示该行的前1行)
               $ grep -B 1 panda file 

    4. -C [NUM], -NUM, --context[=NUM]  
               列出符合行之外并列出上下各NUM行,预设值是2。
             
         ex:   (列出file中除包含panda样式的行外并列出其上下2行)
               (若要改变预设值,直接改变NUM即可)
               $ grep -C[NUM]  panda file 
             
    5. -b, --byte-offset
               列出样式之前的内文总共有多少byte ..
              
          ex:  $ grep -b  panda file  
       显示结果类似於:
         0:panda
        66:pandahuang
       123:panda03
           
    6. --binary-files=TYPE
               此参数TYPE预设为binary(二进位),若以普通方式搜寻,只有2种结果:
                 1.若有符合的地方:显示Binary file 二进位档名 matches
                 2.若没有符合的地方:什麽都没有显示。
                   
               若TYPE为without-match,遇到此参数,
               grep会认为此二进位档案没有包含任何搜寻样式,与-I 参数相同。
                   
               若TPYE为text, grep会将此二进位档视为text档案,与-a 参数相同。
        
     Warning: --binary-files=text 若输出为终端机,可能会产生一些不必要的输出。
              
    7. -c, --count
       不显示符合样式行,只显示符合的总行数。
       若再加上-v,--invert-match,参数显示不符合的总行数。

    8. -d ACTION, --directories=ACTION
               若输入的档案是一个资料夹,使用ACTION去处理这个资料夹。
       预设ACTION是read(读取),也就是说此资料夹会被视为一般的档案;
       若ACTION是skip(略过),资料夹会被grep略过:
       若ACTION是recurse(递),grep会去读取资料夹下所有的档案,
       此相当於-r 参数。

    9.  -E, --extended-regexp
       采用规则表示式去解释样式。
      
   10.  -e PATTERN, --regexp=PATTERN
       把样式做为一个partern,通常用在避免partern用-开始。  

   11.  -f FILE, --file=FILE
       事先将要搜寻的样式写入到一个档案,一行一个样式。
       然後采用档案搜寻。
       空的档案表示没有要搜寻的样式,因此也就不会有任何符合。
       
   ex: (newfile为搜寻样式档)
       $grep -f newfile file    

   12.  -G, --basic-regexp
       将样式视为基本的规则表示式解释。(此为预设)

   13.  -H, --with-filename
       在每个符合样式行前加上符合的档案名称,若有路径会显示路径。
       
   ex: (在file与testfile中搜寻panda样式)   
       $grep -H panda file ./testfile
                file:panda
                ./testfile:panda
                $
     
   14.  -h, --no-filename  
               与-H参数相类似,但在输出时不显示路径。

   15.  --help 
               产生简短的help讯息。

   16.  -I
               grep会强制认为此二进位档案没有包含任何搜寻样式,
               与--binary-files=without-match参数相同。
                   
           ex:  $ grep -I  panda mv

   17.  -i, --ignore-case       
               忽略大小写,包含要搜寻的样式及被搜寻的档案。
               
           ex:  $ grep -i panda mv
                
   18.  -L, --files-without-match 
               不显示平常一般的输出结果,反而显示出没有符合的档案名称。

   19.  -l, --files-with-matches               
               不显示平常一般的输出结果,只显示符合的档案名称。

   20.  --mmap               
               如果可能,使用mmap系统呼叫去读取输入,而不是预设的read系统呼叫。 
               在某些状况,--mmap 能产生较好的效能。 然而,--mmap 
               如果运作中档案缩短,或I/O 错误发生时,
               可能造成未定义的行为(包含core dump),。
               
   21.  -n, --line-number
               在显示行前,标上行号。
               
            ex:  $ grep -n  panda file  
                显示结果相似於下:
                行号:符合行的内容

   22.  -q, --quiet, --silent 
               不显示任何的一般输出。请参阅-s或--no-messages

   23.  -r, --recursive
       递地,读取每个资料夹下的所有档案,此相当於 -d recsuse 参数。

   24.  -s, --no-messages
       不显示关於不存在或无法读取的错误讯息。
     
 小: 不像GNU grep,传统的grep不符合POSIX.2协定,
       因为缺乏-q参数,且他的-s 参数表现像GNU grep的 -q 参数。
       Shell Script倾向将传统的grep移植,避开-q及-s参数,
       且将输出限制到/dev/null。
    
POSIX: 定义UNIX及UNIX-like系统需要提供的功能。              
    
   25.  -V, --version
  显示出grep的版本号到标准错误。
  当您在回报有关grep的bugs时,grep版本号是必须要包含在内的。

   26.  -v, --invert-match
  显示除搜寻样式行之外的全部。
                   
   27.  -w, --word-regexp
          将搜寻样式视为一个字去搜寻,完全符合该"字"的行才会被列出。

   28.  -x, --line-regexp
  将搜寻样式视为一行去搜寻,完全符合该"行"的行才会被列出。 (http://www.fanqiang.com)

载自:http://cache.baidu.com/c?m=9f65cb4a8c8507ed4fece763105392230e54f732608195027fa3c215cc791d16163cfefa7062545393d87c6503ab4b5ae8f6377036082aa09bbfdb0b9fafd7756fde2861304bc4&p=8233c015d9c441ef11f7c7710c108b&user=baidu

grep的使用(二)

作者来源: 
阅读 1100 人次 , 2006-4-4 2:29:00 
 

# ls -l | grep "^d"(仅列出当前目录下的所有目录)
drwxr-xr-x 2 root other 512 11月 25 22:41 ldap
#
# ls -l | grep"^[^d]"(仅列出当前目录下的所有文件)
-rw-r--r-- 1 root other 4987 11月 25 23:22 grep.log
-rw-r--r-- 1 root other 0 11月 26 22:34 grep.log2
-rw-r--r-- 1 root other 267 11月 19 19:37 ifconfig
#
# ls -l| grep "^d.....x..x"(仅列出当前目录下符合“d.....x..x”权限的目录)
drwxr-xr-x 2 root other 512 11月 25 22:41 ldap
#
# grep "mailsrv" /etc/passwd(抽出/etc/passwd中“mailsrv”的用户信息)
mailsrv:x:101:3:iplanet mail user:/iplanet/server5/bin/msg/admin/bin:/bin/sh
#
# grep "mailsrv" /etc/passwd >mailuser.log
# (抽出/etc/passwd中“mailsrv”的用户信息输出到一个文件(mailsrv.log)中)
# more mailuser.log
mailsrv:x:101:3:iplanet mail user:/iplanet/server5/bin/msg/admin/bin:/bin/sh
#
# ps -ef| grep telnet(在显示的进程中抽出“telnet”进程)
root 321 165 0 22:29:33 ? 0:00 in.telnetd
root 638 434 0 23:35:38 pts/1 0:00 grep telnet
# ps -ef| grep telnet | grep -v grep (在显示的进程中抽出“telnet”进程;并丢弃ps中的 grep进程)
root 321 165 0 22:29:33 ? 0:00 in.telnetd
#
# ps -ef| grep -v telnet(将抽出除“telnet”之外的所有进程)
# cat zhao.conf(再来看一下我们使用的文件内容)
48 Dec 3BC1997 LPSX 68.00 LVX2A 138
483 Sept 5AP1996 USP 65.00 LVX2C 189
47 Oct 3ZL1998 LPSX 43.00 KVM9D 512
219 dec 2CC1999 CAD 23.00 PLV2C 68
484 nov 7PL1996 CAD 49.00 PLV2C 234
487 may 5PA1998 USP 37.00 KVM9D 644
471 May 7Zh1999 UDP 37.00 KV30D   643
# egrep "(3ZL|2CC)" zhao.conf(使用egrep来抽取文件(zhao.conf)中前三个字符匹配“3ZL”或“2CC”的行)
47 Oct 3ZL1998 LPSX 43.00 KVM9D 512
219 dec 2CC1999 CAD 23.00 PLV2C 68
# grep "48" zhao.conf |wc(使用 grep抽取文件(zhao.conf)中前两个字符匹配“48”的行,并统计出有几行匹配,有多少个
字,这些字占用多少字节的空间)
4 28 224
在UNIX中字处理是一件很烦琐的事情,但这些字处理工具给我们带来了很大的方便;这里 grep、egrep(扩展 grep,在一些UNIX中
也存在)仅仅是一种工具。但其能灵活的抽出你需要的东东。它将随着你对UNIX的理解程度,逐步变成你手头不可缺少的一个工具
其在shell编程中同样具有举足轻重的位置。 grep、egrep和其他字处理工具的组合使用更为灵活、深澳!谢谢!

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值