grep 命令查找文件中的文本字符串

来源:互联网 发布:兄弟连php课程大纲 编辑:程序博客网 时间:2024/06/05 10:43

grep 命令查找文件中的文本字符串

grep 命令用于搜索由 Pattern 参数指定的模式,并将每个匹配的行写入标准输出中。这些模式是具有限定的正则表达式,它们使用 ed 或 egrep 命令样式。grep 命令使用压缩的不确定算法。 
如果在 File 参数中指定了多个名称,grep 命令将显示包含匹配行的文件的名称。对 shell 有特殊含义的字符 ($, *, [, |, ^, (, ), \ ) 出现在 Pattern 参数中时必须带双引号。如果 Pattern 参数不是简单字符串,通常必须用单引号将整个模式括起来。在诸如 [a-z] 之类的表达式中,-(减号)cml 可根据当前正在整理的序列来指定一个范围。整理顺序可以定义等价的类以供在字符范围中使用。如果未指定任何文件,grep 会假定为标准输入。 

注: 
请勿对特殊文件运行 grep 命令,这样做可能产生不可预计的结果。 
输入行不应包含空字符。 
输入文件应该以换行符结束。 
换行符不会与正则表达式匹配。 
虽然一些标志可以同时被指定,但其中的某些标志会覆盖其他标志。例如,-l 选项将优先于所有其他标志。另外,如果您同时指定了 -E 和 -F 标志,则后指定的那个会有优先权。 
标志 
-b 在每行之前添加找到该行时所在的块编号。使用这个标志有助于通过上下文来找到磁盘块号码。-b 标志不能用于来自标准输入和管道的输入。 
-c 仅显示匹配行的计数。 
-E 将每个指定模式视作扩展的正则表达式(ERE)。ERE 的空值将匹配所有的行。 
注:带有 -E 标志的 grep 命令等价于 egrep 命令,只不过它们的错误和使用信息不同以及 -s 标志的作用不同。 
-e PatternList 指定一个或多个搜索模式。其作用相当于一个简单模式,但在模式以 -(减号)开始的情况下,这将非常有用。模式之间应该用换行符分隔。连续使用两个换行符或者在引号后加上换行符 ("\n) 可以指定空模式。除非同时指定了 -E 或 -F 标志,否则每个模式都将被视作基本正则表达式(BRE)。grep 可接受多个 -e 和 -f 标志。在匹配行时,所有指定的模式都将被使用,但评估的顺序没有指定。 
-F 将每个指定的模式视作字符串而不是正则表达式。空字符串可匹配所有的行。 
注: 带有 -F 标志的 grep 命令等价于 fgrep 命令,只不过它们的错误和使用信息不同以及 -s 标志具有不同的作用。 
-f PatternFile 指定包含搜索模式的文件。模式之间应该用换行符加以分隔,空行将被认为是空模式。每种模式都将被视作基本的正则表达式(BRE),除非同时指定了 -E 或 -F 标志。 
-h 禁止在匹配行后附加包含此行的文件的名称。当指定多个文件时,将禁止文件名。 
-H 如果指定了 -r 或 -R 选项并且在命令行上指定了引用文件类型目录的符号链接,则 grep 将搜索符号链接所引用的目录文件以及文件层次结构中在它以下的所有文件。 
-i 在进行比较时忽略字母的大小写。 


-l 仅列出(一次)包含匹配行的文件的名称。文件名之间用换行符加以分隔。如果搜索到标准输入,将返回(标准输入)的路径名。-l 标志同 -c 和 -n 标志的任意组合一起使用时,其作用类似于仅使用了 -l 标志。 
-L 如果指定了 -r 或 -R 选项,并且引用文件类型目录的符号链接在命令行上指定或在文件层次结构转移过程中遇到,则 grep 将搜索符号链接所引用的目录文件以及文件层次结构中在它以下的所有文件。如果同时指定了 -H 和 -L,则命令行上最近指定的选项将生效。 
-n 在每一行之前放置文件中相关的行号。每个文件的起始行号为 1,在处理每个文件时,行计数器都将被复位。 
-p[ Separator] 显示包含匹配行的整个段落。段落之间将按照 Separator 参数指定的段落分隔符加以分隔,这些分隔符是与搜索模式有着相同格式的模式。包含段落分隔符的行将仅用作分隔符,它们不会被包含在输出中。缺省的段落分隔符是空白行。 
-q 禁止所有写入到标准输出的操作,不管是否为匹配行。如果选择了输入行,则以零状态退出。-q 标志同 -c 和 -l、-n 标志的任意组合一起使用时,其作用类似于仅使用了 -q 标志。 
-r 递归地搜索目录。在缺省情况下,按照到目录的链接。 
-r 递归地搜索目录。在缺省情况下,不按照到目录的链接。 
-s 禁止通常因为文件不存在或不可读取而写入的错误信息。其他的错误信息并未被禁止。 
-v  显示所有与指定模式不匹配的行。 
-w 执行单词搜索。 
-x 显示与指定模式精确匹配而不含其他字符的行。 
-y 当进行比较时忽略字符的大小写。 
PatternList 指定将在搜索中使用的一个或多个模式。这些模式将被视作如同是使用 -e 标志指定的。 
File 指定将对其进行模式搜索的文件的名称。如果未给出 File 变量,将使用标准输入。 

退出状态 
此命令返回以下出口值: 

0 找到匹配项。 
1 未找到匹配项。 
>1 发现语法错误,或者文件不可访问(即使找到了匹配项)。 

示例 
若使用包含以下模式匹配字符的模式:*, ^, ?, [, ], \(, \), \{ 和 \},请输入: 
grep  "^[a-zA-Z]"  pgm.s 
这将显示 pgm.s 中第一个字符为字母的所有行。 

若显示所有与模式不匹配的行,请输入: 
grep   -v  "^#" pgm.s 

这将显示 pgm.s 中首字母不是 #(井字符)的所有行。 
若显示文件 file1 中与abc 或 xyz 字符串匹配的所有行,请输入: 
grep -E  "abc|xyz"  file1 

若在名为 test2 的文件中搜索 $(美元符号),请输入: 
grep \\$ test2 
为了强制 shell 将 \$(单反斜杠和美元符号)传递给 grep 命令,必须要使用 \\(双反斜杠)。\(单反斜杠)字符可通知 grep 命令将其后的字符(本例中为 $)视作原义字符而不是表达式字符。如果使用 fgrep 命令,则可以不必使用反斜杠之类的转义字符。 

通过 /tmp 递归地搜索以找到含有字 IBM 的文件,而不是通过指向目录的链接进行递归搜索,请输入: 
grep –R IBM /tmp 
或 
grep –r -H IBM /tmp 
要通过 /tmp 递归地搜索以找到含有词 IBM 的文件,同时也通过链接进行递归搜索,请输入: 
grep –r IBM /tmp 
或 
grep -R -L IBM /tmp 
文件 
/usr/bin/grep 包含 grep 命令。 

本篇文章来源于 飞扬教程 原文链接:http://www.51fy.cn/system/AIX/200708/41624.htm
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 海关包裹被扣怎么办 天猫未收货显示签收怎么办 物流显示包裹破损怎么办 快递寄鞋盒破损了怎么办 邮寄东西碎了怎么办 快递屏幕碎了怎么办 快递东西破了怎么办 收快递东西损坏怎么办 快递寄新鲜东西怎么办 寄东西损坏了怎么办 顺丰写错电话号码已签收怎么办 快递包装扔了怎么办 淘宝快递损坏了怎么办 买家寄过来破损怎么办 卖家发假单号自动签收怎么办 ems快递包裹破损怎么办 微波炉外包装扔掉退货怎么办 交警判决不服该怎么办 如果判决不服该怎么办 学不会看卡尺怎么办 我学不会卡尺怎么办 卡尺表针歪了怎么办 电喷摩托车没电怎么办 话筒插头坏了怎么办 电柜接线看不懂怎么办 发动机缸盖渗油怎么办 吃杏吃多了肚子难受怎么办 住院单据丢了怎么办 医院单据丢了怎么办 购房单据丢了怎么办 废电瓶回收手续怎么办 ai置入图片过大怎么办 ps 弄错纸张大小怎么办 屁股沟发炎红肿怎么办 房间里床太大怎么办 房间太小放不下桌子怎么办 没衣柜一堆衣服怎么办 玻璃笔坏了怎么办 玻璃笔头断了怎么办 学校教室有苍蝇怎么办 高中生书不够放怎么办