grep描述
grep命令是Globally search a Regular Expression and Print的缩写,表示进行全局的正则匹配并进行打印。grep的相关扩展命令包括egrep和fgrep,其中egrep支持更多的正则匹配,fgrep只进行字符的匹配,不支持正则表达是。
grep用法说明
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
OPTIONS
-n 匹配的行数也展示出来
-A 3 将匹配之后的3行也展示出来
-B 3 将匹配之前的3行业展示出来
-o 仅输出匹配的部分
-v 反向匹配
-f 指定需要匹配的文件
案例说明
原始文件file.txt如下所示
abcdefg
abcdefg
1234567
1234567
only one
abcdefg1234567
abcdefg1234567
abcdefgh12345678
abcdefgh12345678
abcdefh1234568
abcdefh1234568
aaabbb111222
aaaabbbb11112222
原始文件re_file.txt
abcdef[gh]12345
aaaa
1.匹配指定内容并且打印出行号
grep -n 'abcdefg123' file.txt
6:abcdefg1234567
7:abcdefg1234567
2.将匹配行的前一行和后一行内容都打印出来
grep -A1 -B1 -n 'abcdefg123' file.txt
5-only one
6:abcdefg1234567
7:abcdefg1234567
8-abcdefgh12345678
3.匹配abcdefg123456或者abcdefh123456的行
grep 'abcdef[gh]123456' -n file.txt
6:abcdefg1234567
7:abcdefg1234567
10:abcdefh1234568
11:abcdefh1234568
4.找到a开头,8结尾的行
grep '^a.*8$' -n file.txt
8:abcdefgh12345678
9:abcdefgh12345678
10:abcdefh1234568
11:abcdefh1234568
5.找到a出现3到5次的行
grep 'a\{3,5\}' -n file.txt 或者 egrep 'a{3,5}' -n file.txt
12:aaabbb111222
13:aaaabbbb11112222
6.匹配1111或者aaaa的行
egrep 'aaaa|1111' -n file.txt 或者 grep 'aaaa\|1111' -n file.txt
13:aaaabbbb11112222
7.匹配指定文件中的行
grep -f re_file.txt -n file.txt
6:abcdefg1234567
7:abcdefg1234567
10:abcdefh1234568
11:abcdefh1234568
13:aaaabbbb11112222