Linux 如何使用grep
一直以为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的行