`
lijunjie
  • 浏览: 387916 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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
分享到:
评论
2 楼 lijunjie 2008-09-11  
也是转载别人的。用的时候可以方便点。
1 楼 jackywjj 2008-09-10  
很不错,比较全,特别在急用的时候,多谢

相关推荐

    Linux查找文件中的字符串命令 grep -nr 'archermind'

    (1)字符串参数最好采用是双引号括,一是以防被误解为shell命令,二是可以用来查找多个单词组成的字符串 -c:只输出匹配行的记数 -i:不区分大小写(只适用于单个字符) -h:查询多个文件时不显示文件名 -H:只显示...

    linux中grep命令的使用.docx

    例如,使用 find /etc -name * | xargs grep wl0505 命令可以查找 etc 目录下含有字符串"wl0505"的文件。 grep 命令也支持正则表达式,例如 ^符号表示锚定行的开始,$符号表示锚定行的结束,.符号表示匹配一个非换...

    深入理解Linux中的grep命令

    Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。 grep [-...

    linux中使用grep命令详解

    Linux grep命令用于查找文件里符合条件的字符串;也可以用于查找内容包含指定的范本样式的文件。它能使用正则表达式搜索,用于在文件中搜索指定的字符串模式,列出含有匹配模式子符串的文件名,并输出含有该字符串的...

    grep:一个行人,非常快的 grep 实用程序:一个类 Unix 的,非常快的 grep 实用程序,用于在任何类型的文件中查找字符串-matlab开发

    一个快速的 grep 实用程序,它在文件夹及其子文件夹中的所有或选定的任何类型的文件中查找字符串模式(如果设置了递归标志 -r)。 文件访问和字符串匹配由低级 i/o 和字符串例程优化。 递归算法 (-r) 不使用 ML 的 ...

    linux中批量查找替换文本内容例子.docx

    这将查找当前目录下所有文件名中包含某个字符串的文件,并将其替换为另一个字符串。 11. 使用 vim 批量替换文本 vim 编辑器可以批量替换文本,例如: `:s/XXX/YYY/g` 这将将当前行中的所有 XXX 替换为 YYY。 `:...

    详解 Shell中的grep命令

    如果您要在几个文本文件中查找一字符串,可以使用‘grep’命令。‘grep’在文本中搜索指定的字符串。举个例子:假设您正在‘/usr/src/linux/Documentation’目录下搜索带字符串‘magic’的文件: $ grep magic /usr...

    Windows cmd 管道过滤命令findstr 学习文档

    findstr是Window系统自带的命令,用途是查找指定的一个或多个文件文件中包含(或通过参数 /V来控制不包含)某些特定字符串的行,并将该行完整的信息打印出来,或者打印查询字符串所在的文件名。 搜索文件中的文本...

    linux下perl,sed,shell批量替换文件内容.docx

    其中,`sed -i` 命令将执行 sed 编辑器,`s/原字符串/新字符串/g` 是 sed 代码,用于执行字符串替换操作,`grep` 命令用于查找包含原字符串的文件,`-r` 选项用于递归查找,`-l` 选项用于显示文件名。 例如,要将...

    快速查找字符串-Fast String Searching

    知道linux的grep命令查找文本为什么如此高效么?是使用了Boyer-Moore算法,具体可以看看这本电子书。

    入门学习Linux常用必会60个命令实例详解doc/txt

    ◆ 文件处理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln; ◆ 系统管理相关命令:df、top、free、quota、at、lp、adduser、groupadd、kill、crontab; ◆ 网络操作命令:ifconfig、ip、ping、...

    linux下批量替换文件内容的方法.docx

    grep 命令是 Linux 系统中最强大的文本搜索工具之一,它可以查找单个文件或文件夹下文件中的内容。使用参数 "-r" 或 "-R" 可以递归查找指定文件夹下的所有文件;参数 "-l" 可以让 grep 输出包含指定字符串的文件名,...

    linux操作系统命令手册

    常用指令 ls 显示文件或目录 -l 列出文件详细信息l(list) -a 列出当前目录下所有文件及目录,包括隐藏的a(all) mkdir 创建目录 -p 创建目录,若无父目录,则创建p...grep 在文本文件中查找某个字符串 rmdir

    Linux文本处理命令合集

    主要涉及shell脚本中文本处理常见命令,diff/patch查找文本差异,字符串截取cut、tr、uniq等

    C#搜索文字在文件及文件夹中出现位置的方法

    今天做了一个C#程序,专门用来找出一个指定字符串在文件中的位置,与一个指定字符串在一个文件夹中所有的出现位置。 一、程序代码 using System; using System.Collections.Generic; using System.Linq; using ...

    linux常用命令大全.doc

    grep:在文件中搜索指定的字符串。 sed、awk:流编辑器,用于对文本进行复杂的处理。 系统信息命令: uname:显示系统信息。 df:显示磁盘使用情况。 du:查看文件和目录的磁盘使用情况。 top、htop:显示系统进程...

    UNIX Handbook

    1.grep匹配 etc services文件中以ftp字符串开头的哪些文本行 21 2.grep匹配以system文本结尾的行 21 3.grep匹配仅包含一个#字符的行 21 4.grep匹配以<abc>或者[abc]开头的行 21 5.grep匹配以Ftp或者ftp...

    Linux 入门时必学60文件处理个命令

    grep 命令可以指定文件中搜索特定的内容,并将含有这些内容的行标准输出。grep全称是 Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。其格式是 grep [options],主要参数包括:...

    linux grep正则表达式与grep用法详解

    功能:输入文件的每一行中查找字符串。 基本用法: grep [-acinv] [–color=auto] [-A n] [-B n] ‘搜寻字符串’ 文件名 参数说明: -a:将二进制文档以文本方式处理 -c:显示匹配次数 -i:忽略大小写差异 -n:在行...

    运行jar脚本.doc

    `ps -ef` 命令用于显示当前系统中的所有进程,`grep run.*TESTRUN.jar` 命令用于查找包含 `run-TESTRUN.jar` 字符串的进程,`grep -v grep` 命令用于排除 grep 命令自身的进程,`awk '{print "kill -9 " $2}'` 命令...

Global site tag (gtag.js) - Google Analytics