Linux grep 命令用于查找文件里符合条件的字符串。
如下所示:
grep 最简单的使用方法是grep ”查询字符串“ ”查找的文件“,第一个例子是查询”test“字符,所以第一行被匹配出来了,如果要匹配到TEST,可以加-i,表示忽视大小写,如果要定位到匹配的行数,可以加-n。
- -n
- -c
如果要统计所有匹配到的行数可以用-c。注意,是行数不是个数。
- -o
如果只想查询被匹配到的内容,可以选择-o。但是-o只会把每个匹配到的关键字都单独列出,如果某一行出现两个匹配内容,则会各自单独列出。
- -ABC
我们在查找相关字符时偶尔需要字符前后的一些信息,可以使用-B1(before,即匹配行数前面1行),-A(after,集后一行
-C(context,即前后行)
- -w(word)
我们匹配某一个相关词时,可能需要某个词作为一个单独字符出现,比方male和female,这个时候就要限制单个词。可以使用-w。
- -v
有时候我们需要反向查找,比方要不出现“test”的行数。可以用-v
- -e
如果需要匹配多个字符,比方“ABC”,“TEST”,不论包含哪一个都需要被打印出来,可以用-e。
-q
如果你只关心某个文件是否存在某个字符,而不关心具体信息,可以用-q。
当使用“-q”选项时,表示grep使用静默模式,无论有没有匹配到,最后都不会有返回值,需要配合“echo $?”命令,查看命令的执行状态,如果返回值为0,表示匹配到了,如果是1,表示没有匹配到。
总结:
- grep "test" testfile
- -i 表示忽视大小写
- -n 表示显示匹配的位置(行数)
- -c 计算所有匹配到的行数,使用此条时,相关匹配不会被打印出来。
- -o只列出匹配的字符
- -A,-B,-C分别可以打印出匹配行的前后相关行内容
- -w 限制相关字符以单个单词出现
- -v 表示反向查找
- -e多种匹配,表示多个目标存在或的关系
- -q grep表示静默状态,可配合echo $?使用,返回为0则表示有匹配,1则没有匹配到。