grep简单用法

语法:

grep [-option] 文件名

1.常用参数

-c: 打印符合要求的行数 grep -c num grep.txt
#15
-i :忽略大小写 grep -i unix grep.tx
# The grep command first appeared in Version 6 AT&T UNIX.
-n:输出符合要求的行和行号 grep -ni unix grep.txt
#295: The grep command first appeared in Version 6 AT&T UNIX.
-v:打印不符合要求的行,即反选 grep -vi unix grep.txt
-A:后跟数字(有无空格都可以),例如-A2 表示打印符合要求的行以及下面两行 grep -A 2 -i unix grep.txt
-B:后跟数字,例如-B2表示打印符合要求的行以及上面两行 grep -B2 -i unix grep.txt
-C:后跟数字,例如-C2表示打印符合要求的行以及上下各两行 grep -C2 -i unix grep.txt
-o:只打印符合要求的内容,而非整行 grep -o -i unix grep.txt
#UNIX
--color 符合要求的内容加上颜色,值有auto always never grep --color=auto -i unix grep.txt
-m num,--max-count=num匹配到num次,不再执行 grep -m 5 -i unix grep.txt|wc -l
#5
-w:只显示全字符合的列/td> adb devices|grep -w device

2.正则表达式

[]匹配内容 [0-9]匹配所有包含数字的行:grep '[0-9]' text.txt
123
456
hij789
012ABC

[15]匹配1和5
[a-zA-Z]匹配所有字母:grep '[a-zA-Z]' text.txt
指定要过滤字符出现的次数{n1,n2}
其中n1小于n2,表示重复n1到n2次前面的字符,n2可以为空,表示大于等于n1次。
这个命令结合-o使用,能够看到匹配结果
grep 'l\{2\}' text.txt  Hello World
grep 'l\{1,\}' text.txt Hello World
grep 'l\{1,4\}' text.txt  Hello World
grep -o 'l\{2,\}' text.txtt
[^字符]表示匹配除[]之外的字符。注意:此时将去除完全符合的行,混合内容不会去除,空行永远匹配 grep -n '[^0-9]' text.txt   打印除纯数字以外的行
grep -n '[^a-zA-Z]' text.txt   打印除纯字母以外的行
grep '[^r]oo' test.txt 打印不包含r,但包含oo的行
^行的开头 $行的结尾 ^$表示空行 grep '^[0-9]' text.txt 打印以数字开头的行
grep '[0-9]$' text.txt 打印以数字结尾的行
grep '^$' text.txt 打印空行
grep '^[^a-zA-Z]' test.txt 打印非字母开头的行
. 表示任意一个字符
* 0或任意个前面的字符
.* 表示0或多个任意字符,空行也包含在内
grep 'e..o' text.txt 把符合e和o之间有2个任意字符的行打印出来
grep 'ooo*' file oo,ooo,oooo....
grep '.*' /etc/passwd 全部打印

测试文档

#text.txt
rot#x#0#0#/rot#/bin/bash
operator#x#11#0#operator#/root#/sbin/nologin
operator#x#11#0#operator#/rooot#/sbin/nologin
roooot#x#0#0#/rooooot#/bin/bash
1111111111111111111111111111111
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

示例:

#打印包含bash的行
grep bash text.txt 
# 加颜色
grep --color="auto" bash text.txt 
# 不知道那个文件包含了想要的内容,可以使用递归-r
grep echo -rl . #在当前目录查找带echo的文件
#先去寻找shell文件,再从文件中匹配echo
find . -name "*.sh" |xargs grep echo
posted on 2019-12-03 21:24  singleSpace  阅读(745)  评论(0编辑  收藏  举报