Linux 如何使用grep

2016-08-24 15:43:04 7494

一直以为grep只能进行单个文件的筛选,今天才发现,它可以进行多个文件的筛选。这个功能真是太强大了。还是记录一下吧。

假设我要找一个start_kernel函数,但我不知道此函数在哪个文件里,于是可以用如下命令:

grep -wrI "start_kernel" ./*

以下是一些其它的用法,也记录一下,算是巩固吧

grep命令主要参数:

-c:只输出匹配行的计数。
-I:不处理二进制文件
-i:不区分大小写(只适用于单字符)。
-r:递归处理目录下的所有文件。
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及 行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。
-w:包含正则表达式。

grep命令常见用法:

(1)多个文件查询
    grep "sort" *.doc    #常见文件名的匹配

(2)行匹配:输出匹配行的计数
    grep -c "sort" data.doc    #输出data.doc中含有sort的行数

(3)显示匹配行和行数
    grep -n "sort" data.doc    #显示data.doc中所有匹配sort的行和行号

(4)显示非匹配的行
    grep -vn "sort" data.doc    #输出data.doc中所有不?含sort行

(4)显示非匹配的行
    grep -vn "sort" data.doc    #输出data.doc中不包含sort的行

(5)大小写敏感
    grep -i "ab" data.doc    #输出data.doc中所有含有ab或Ab的字符串的行

(6)正则表达式的应用 (注意:最好把正则表达式用单引号括起来)
    grep '[239].' data.doc      #输出所有含有以2,3或9开头的,并?是两个数字的行

(7)不匹配测试
    grep '^[^48]' data.doc      #不匹配行首是48的行


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: