grep的用法首先创建我们练习grep命令时需要用到的demo文件demo_file。

  1. $ cat demo_file
  2. THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.
  3. this line is the 1st lower case line in this file.
  4. This Line Has All Its First Character Of The Word With Upper Case.
  5. Two lines above this line is empty.
  6. And this is the last line.

1.从单个文件中搜索指定的字串

grep的基础用法是如下例的从指定的文件中搜索特定的字串。

语法:

  1. grep "literal_string" filename
  1. $ grep "this" demo_file
  2. this line is the 1st lower case line in this file.
  3. Two lines above this line is empty.
  4. And this is the last line.

2. 在多个文件中检索指定的字串语法:

  1. grep "string" FILE_PATTERN

先拷贝demo_file为demo_file1。

grep的结果在符合条件的行前将包括文件名。

当文件名包含元字符时,linux shell会将匹配的所有文件作为输入到grep中去。

  1. $ cp demo_file demo_file1
  2. $ grep "this" demo_*
  3. demo_file:this line is the 1st lower case line in this file.
  4. demo_file:Two lines above this line is empty.
  5. demo_file:And this is the last line.
  6. demo_file1:this line is the 1st lower case line in this file.
  7. demo_file1:Two lines above this line is empty.
  8. demo_file1:And this is the last line.

3. 用 grep -i 进行大小写无关的搜索语法:

  1. grep -i "string" FILE

也是一个基本用法,

对搜索的字串忽略大小写,因此下例中匹配“the”, “THE” and “The”。

  1. $ grep -i "the" demo_file
  2. THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.
  3. this line is the 1st lower case line in this file.
  4. This Line Has All Its First Character Of The Word With Upper Case.
  5. And this is the last line.

4. 使用用正则表达式语法:

  1. grep "REGEX" filename

如果你能有效地利用正则表达式,这是个很有用的特点。

在下面的例子中,搜索全部以“lines”开始以“empty”结束的字串,

如搜索“lines[之间任意字]empty” ,并且忽略大小写。

  1. $ grep -i "lines.*empty" demo_file
  2. Two lines above this line is empty.

正则表达式遵循的几个重复的操作

  • ? 最多匹配一次
  • * 匹配零次或者任意多次
  • + 匹配一次以上
  • {n} 匹配n次
  • {n,} 最少匹配n次
  • {,m} 最多匹配m次
  • {n,m} 匹配n到m次

5. 用grep -w搜索整个词,而不是词中的部分字串

使用-w选项搜索一个单词,并且避免搜索到词中的部分字串。

下例搜索"is"。

如果不加-w选项,将显示“is”, “his”, “this” 等所有包含“is”的行。

  1. $ grep -i "is" demo_file
  2. THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.
  3. this line is the 1st lower case line in this file.
  4. This Line Has All Its First Character Of The Word With Upper Case.
  5. Two lines above this line is empty.
  6. And this is the last line.

下例使用了-w选项,

请注意结果中不包含

“This Line Has All Its First Character Of The Word With Upper Case”,

虽然 “This”中包含“is”。

  1. $ grep -iw "is" demo_file
  2. THIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.
  3. this line is the 1st lower case line in this file.
  4. Two lines above this line is empty.
  5. And this is the last line.

6. 使用grep -A, -B and -C显示之前、之后、前后的几行

当使用grep搜索大文件时,

显示匹配行附近的多行数据是一个很有用的功能。

创建如下文件

  1. $ cat demo_text
  2. 4. Vim Word Navigation
  3. You may want to do several navigation in relation to the words, such as:
  4. * e - go to the end of the current word.
  5. * E - go to the end of the current WORD.
  6. * b - go to the previous (before) word.
  7. * B - go to the previous (before) WORD.
  8. * w - go to the next word.
  9. * W - go to the next WORD.
  10. WORD - WORD consists of a sequence of non-blank characters, separated with white space.
  11. word - word consists of a sequence of letters, digits and underscores.
  12. Example to show the difference between WORD and word
  13. * 192.168.1.1 - single WORD
  14. * 192.168.1.1 - seven words.

6.1 显示匹配行之后的N行

-A

语法:

  1. grep -A "string" FILENAME

下例显示匹配行和之后的3行数据

  1. $ grep -A 3 -i "example" demo_text
  2. Example to show the difference between WORD and word
  3. * 192.168.1.1 - single WORD
  4. * 192.168.1.1 - seven words.

6.2显示匹配行之前的N行

-B

语法:

  1. grep -B "string" FILENAME

下例显示匹配行和之前的2行数据

  1. $ grep -B 2 "single WORD" demo_text
  2. Example to show the difference between WORD and word
  3. * 192.168.1.1 - single WORD

6.3显示匹配行前后的N行

-C

显示之前的n行,之后的n行数据.

  1. $ grep -C 2 "Example" demo_text
  2. word - word consists of a sequence of letters, digits and underscores.
  3. Example to show the difference between WORD and word
  4. * 192.168.1.1 - single WORD

7.通过GREP_OPTIONS高亮显示搜索的字串

如果你希望搜索的字串高亮显示在结果中,可以试用以下的办法。

通过修改GREP_OPTIONS对搜索字串高亮显示。

  1. $ export GREP_OPTIONS='--color=auto' GREP_COLOR='100;8'
  2. $ grep this demo_file
  3. this line is the 1st lower case line in this file.
  4. Two lines above this line is empty.
  5. And this is the last line.

8. 用grep -r递归搜索全部的文件

如果想查找当前目前以及其子目录的全部文件时,

可以使用 -r 选项。

如下例

  1. $ grep -r "ramesh" *

9. 使用grep -v进行不匹配

可以使用-v选项显示不匹配搜索字串的行。

下例显示demo_text文件中不包含“go”的行

  1. $ grep -v "go" demo_text
  2. 4. Vim Word Navigation
  3. You may want to do several navigation in relation to the words, such as:
  4. WORD - WORD consists of a sequence of non-blank characters, separated with white space.
  5. word - word consists of a sequence of letters, digits and underscores.
  6. Example to show the difference between WORD and word
  7. * 192.168.1.1 - single WORD
  8. * 192.168.1.1 - seven words.

10. 显示不匹配全部模式的行语法:

  1. grep -v -e "pattern" -e "pattern"

创建如下例子文件

  1. $ cat test-file.txt
  2. a
  3. b
  4. c
  5. d
  6. $ grep -v -e "a" -e "b" -e "c" test-file.txt
  7. d

11.用grep -c 统计匹配的行数语法:

  1. grep -c "pattern" filename
  2. $ grep -c "go" demo_text
  3. 6

统计不匹配的行数

  1. $ grep -v -c this demo_file
  2. 4

12. 用grep -l 只显示文件名

  1. $ grep -l this demo_*
  2. demo_file
  3. demo_file1

13. 只显示匹配的字串

缺省显示匹配字串的所在行,

可以使用-o选项只显示匹配的字串。

这项功能当使用正则表达式时比较有用处。

  1. $ grep -o "is.*line" demo_file
  2. is line is the 1st lower case line
  3. is line
  4. is is the last line

14. 显示匹配的位置语法:

  1. grep -o -b "pattern" file
  2. $ cat temp-file.txt
  3. 12345
  4. 12345
  5. $ grep -o -b "3" temp-file.txt
  6. 0:3
  7. 6:3

注意: 以上输出显示的不是行内的位置,而是整个文件中的字节byte位置

15. 用 grep -n 在输出时显示行号

行号从1开始

  1. $ grep -n "go" demo_text
  2. 5: * e - go to the end of the current word.
  3. 6: * E - go to the end of the current WORD.
  4. 7: * b - go to the previous (before) word.
  5. 8: * B - go to the previous (before) WORD.
  6. 9: * w - go to the next word.
  7. 10: * W - go to the next WORD.

原文地址:http://www.cnblogs.com/xuxm2007/archive/2011/01/10/1932288.html

grep的用法的更多相关文章

  1. grep常用用法

    grep常用用法 [root@www ~]# grep [-acinv] [--color=auto] '搜寻字符串' filename 选项与参数: -a :将 binary 文件以 text 文件 ...

  2. linux grep的用法

    linux grep的用法<pre>[root@iZ23uewresmZ ~]# cat /home/ceshis.txtb124230 b034325 a081016 m7187998 ...

  3. 文本三剑客之grep的用法

    第1章         正则表达式 1.1    正则表达式的介绍               正则是用来过滤文件内容               为处理大量文本|字符串而定义的一套规则和方法.    ...

  4. linux中grep的用法

    http://www.9usb.net/200902/linux-grep.html http://blog.51yip.com/linux/1008.html http://blog.csdn.ne ...

  5. grep精确匹配搜索某个单词的用法 (附: grep高效用法小结))

    grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正 ...

  6. Ubuntu下,grep的用法

    grep(Global search Regular Expression and Print out the line)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.U ...

  7. grep命令用法

    linux中grep命令的用法 作为linux中最为常用的三大文本(awk,sed,grep)处理工具之一,掌握好其用法是很有必要的. 首先谈一下grep命令的常用格式为:grep  [选项]  ”模 ...

  8. grep的用法,小技巧,模板中含有\t时:grep -P "^\t" file

    linux中grep和find的用法区别 本文章详细的介绍了关于在linux中的grep和find两个命令的用法介绍,以及后面总结了它们两年用法区别哦. 先我们来介绍一下关于grep用法和一些小注意事 ...

  9. <三剑客> 老三:grep命令用法

    grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正 ...

随机推荐

  1. Linux下c++中的atoi、atol、atoll、atof函数调用实例

    本文中调用的四个函数如下: atoi函数:将字符串转化为int类型变量 atol函数:将字符串转化为long类型变量 atoll函数:将字符串转化为long long类型变量 atof函数:将字符串转 ...

  2. #ifdef __cplusplus extern "C" { #endif

    1.在好多程序中我们会遇到下面代码段 #ifdef __cplusplus        extern "C" {        #endif //c语法代码段 #ifdef __ ...

  3. for循环嵌套的穷举,迭代,以及while的使用和for的转换

    for循环的穷举.解决多种方法做种组合问题,代替人脑的大量计算 穷举例子 迭代,寻找一定的规律.然后利用循环找出结果 迭代举例 以五个小朋友3岁,之前的每一个小朋友都比序号在后的小朋友大两岁.温,第一 ...

  4. 电脑能上网,手机连上wifi不能上网

    电脑能上网,手机连上wifi不能上网  ,其实只要把手机的dhcp 改为我们熟悉的就行了 我此处就设置为114.114.114.114

  5. winform 发邮件

    System.Net.Mail.SmtpClient client = new SmtpClient("smtp.163.com");   client.UseDefaultCre ...

  6. UVA 10254 十八 The Priest Mathematician

    The Priest Mathematician Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu ...

  7. 关于socket tcp 断线重连

    这个问题困扰过我几次,都没有来得及研究,今天研究一下. 首先写一个最简易的socket tcp程序,连接成功后再关闭服务器然后再用客户端各种操作看是什么情况 测试表明 (1)客户端已经连接,当服务端关 ...

  8. [数据结构与算法]队列Queue 的多种实现

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  9. 部署PDA程序的时候存储不足的解决办法

    通常Windows Mobile的存储空间分为程序内存和存储内存,默认都比较小,当程序比较大的时候可能无法正常部署到设备上面,针对此问题可采用如下办法解决:1.通过VS修改,工具--选项--设备--选 ...

  10. QQ音乐项目(OC版) - 实现细节

    QQ 音乐看似简单,但自己手动实现起来,才发现没有那么简单,有好多细节,需要注意. github : https://github.com/keenleung/QQMusic-OC 一.业务逻辑 首先 ...