grep 命令系列:如何在 Linux/UNIX 中使用 grep 命令

作者:佚名 上传时间:2019-04-21 版权申诉

grep 命令系列:如何在 Linux/UNIX 中使用 grep 命令


我该怎样在 Linux、Apple OS X 及其他类 UNIX 系统中使用 grep 命令,你能给我展示一些简单的例子吗?

grep 命令用来搜索文本,或从给定的文件中搜索行内包含了给定字符串或单词的文件。通常来说,grep 显示匹配到的行。使用 grep 来搜索包括一个或多个正则表达式匹配到的文本行,然后只显示匹配到的行。grep 被视作在 Linux/ Unix 系统中最有用的命令之一。

你知道吗

grep 这个名字,来源于一个 Unix/Linux 中的古老的行编辑器 ed 中执行相似操作的命令:


   
  1. g / re / p

grep 命令的语法

语法如下所示:


   
  1. grep 'word' 文件名
  2. grep 'word' 文件 1 文件 2 文件 3
  3. grep 'word1\|word2' 文件名
  4. cat 某个文件 | grep '某个东西'
  5. command | grep '某个东西'
  6. command 选项 1 | grep '数据'
  7. grep -- color '数据' 文件名

怎么样使用 grep 来搜索一个文件

搜索 /etc/passwd 文件下的 boo 用户,输入:


   
  1. $ grep boo / etc / passwd

输出内容:


   
  1. foo : x : 1000 : 1000 : foo ,,,: /home/ foo : /bin/ ksh

可以使用 grep 去强制忽略大小写。例如,使用 -i 选项可以匹配 boo, Boo, BOO 和其他组合:


   
  1. $ grep - i "boo" / etc / passwd

递归使用 grep

你可以递归地使用 grep 进行搜索。例如,在文件目录下面搜索所有包含字符串“192.168.1.5”的文件


   
  1. $ grep - r "192.168.1.5" / etc /

或者是:


   
  1. $ grep - R "192.168.1.5" / etc /

示例输出:


   
  1. /etc/ ppp / options :# ms - wins 192.168 . 1.50
  2. / etc / ppp / options :# ms - wins 192.168 . 1.51
  3. / etc / NetworkManager / system - connections / Wired connection 1 : addresses1 = 192.168 . 1.5 ; 24 ; 192.168 . 1.2 ;

你会看到搜索到 192.168.1.5 的结果每一行都前缀以找到匹配的文件名(例如:/etc/ppp/options)。输出之中包含的文件名可以加 -h 选项来禁止输出:


   
  1. $ grep - h - R "192.168.1.5" / etc /

或者


   
  1. $ grep - hR "192.168.1.5" / etc /

示例输出:


   
  1. # ms - wins 192.168 . 1.50
  2. # ms - wins 192.168 . 1.51
  3. addresses1 = 192.168 . 1.5 ; 24 ; 192.168 . 1.2 ;

使用 grep 去搜索文本

当你搜索 boo 时,grep 命令将会匹配 fooboo,boo123, barfoo35 和其他所有包含 boo 的字符串,你可以使用 -w 选项去强制只输出那些仅仅包含那个整个单词的行(LCTT译注:即该字符串两侧是英文单词分隔符,如空格,标点符号,和末端等,因此对中文这种没有断字符号的语言并不适用。)。


   
  1. $ grep - w "boo" file

使用 grep 命令去搜索两个不同的单词

使用 egrep 命令如下:


   
  1. $ egrep - w 'word1|word2' / path / to / file

(LCTT 译注:这里使用到了正则表达式,因此使用的是 egrep 命令,即扩展的 grep 命令。)

统计文本匹配到的行数

grep 命令可以通过加 -c 参数显示每个文件中匹配到的次数:


   
  1. $ grep - c 'word' / path / to / file

传递 -n 选项可以输出的行前加入匹配到的行的行号:


   
  1. $ grep - n 'root' / etc / passwd

示例输出:


   
  1. 1 : root : x : 0 : 0 : root : /root:/ bin / bash
  2. 1042 : rootdoor : x : 0 : 0 : rootdoor : /home/ rootdoor : /bin/ csh
  3. 3319 : initrootapp : x : 0 : 0 : initrootapp : /home/ initroot : /bin/ ksh

反转匹配(不匹配)

可以使用 -v 选项来输出不包含匹配项的内容,输出内容仅仅包含那些不含给定单词的行,例如输出所有不包含 bar 单词的行:


   
  1. $ grep - v bar / path / to / file

UNIX/Linux 管道与 grep 命令

grep 常常与管道一起使用,在这个例子中,显示硬盘设备的名字:


   
  1. # dmesg | egrep '(s|h)d[a-z]'

显示 CPU 型号:


   
  1. # cat / proc / cpuinfo | grep - i 'Model'

然而,以上命令也可以按照以下方法使用,不使用管道:


   
  1. # grep - i 'Model' / proc / cpuinfo

示例输出:


   
  1. model : 30
  2. model name : Intel ( R ) Core ( TM ) i7 CPU Q 820 @ 1.73GHz
  3. model : 30
  4. model name : Intel ( R ) Core ( TM ) i7 CPU Q 820 @ 1.73GHz

如何仅仅显示匹配到内容的文件名字?

使用 -l 选项去显示那些文件内容中包含 main() 的文件名:


   
  1. $ grep - l 'main' *. c

最后,你可以强制 grep 以彩色输出:


   
  1. $ grep -- color vivek / etc / passwd

示例输出:










本文来自云栖社区合作伙伴“Linux中国”
原文发布时间为:2013-04-02.

免责申明:文章和图片全部来源于公开网络,如有侵权,请通知删除 server@dude6.com

用户评论
相关推荐
unixgrep命令
unix下学习grep命令不可多得的资料,决定原创,绝对值的你拥有!!
DOCX
178KB
2020-08-20 03:40
grep 命令系列:如何在 Linux/UNIX使用 grep 命令
grep 命令系列:如何在 Linux/UNIX 中使用 grep 命令 我该怎样在 Linux、Apple OS X 及其他类 UNIX
Linuxgrep命令参数及用法详解linux管道命令grep
介绍linux下的grep关键查询的命令用法
DOCX
0B
2019-05-13 20:34
详解linux grep命令
本篇文章主要介绍了linux grep命令,现在分享给大家,也给大家做个参考。正在学习的同学可以了解一下。
PDF
80KB
2020-09-21 02:12
linux使用grep命令详解
在本篇文章里小编给大家整理了关于linux中使用grep命令的相关知识点内容,需要的朋友们跟着学习下。
PDF
51KB
2020-09-21 02:35
Linux grep命令用法详解
Linux grep 命令 Linux grep 命令用于查找文件里符合条件的字符串。 grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指
PDF
48KB
2021-01-15 21:51
Linux Grep命令使用的详细介绍
L1.grep简介grep(globalsearchregularexpression(RE)andprintouttheline,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用
DOC
0B
2019-09-06 23:03
实现grep命令
自己实现的grep,相对于初学者是较好的学习资源
其他文档
0B
2019-09-09 02:57
grep命令详解
grep命令详解
HTML
9KB
2021-02-01 04:07
shell grep命令
希望各位不要白piao,点个赞或者刷个评论再走,还有【禁止转载】,抄袭转载必究,谢谢合作。 本篇文章主要讲了grep命令的用法,如果会了可以忽略本文章,省下时间去学习别的知识~ 作用 Linux系统中
PDF
66KB
2021-01-15 21:21