- grep/egrep 格式:
grep [-cinvABC] 'word' filename
-c 表示打印符合要求的行数 -i 表示忽略大小写 -n 表示输出符合要求的行及其行号 -v 表示打印不符合要求的行 -A 后面跟一个数字(有无空格都行)如: -A2 表示打印符合要求的行以及后面两行 -B 后面跟一个数字(有无空格都行)如: -B2 表示打印符合要求的行以及前面两行 -C 后面跟一个数字(有无空格都行)如: -C2 表示打印符合要求的行以及前面和后面各两行
如
# vi test.txt
aaa
bbb
ccc
12345678
# grep -A2 'b' test.txt
bbb
ccc
12345678
输出带有关键词的行及其行号
# grep -n 'bb' test.txt
2: bbb
过滤含关键词的行再输出其余行及其行号
# grep -nv 'bbb' test.txt
1: aaa
3: ccc
4: 12345678
输出还有包含数字的行
# grep '[0-9]' test.txt
12345678
过滤不包含数字的行再输出
# grep -v '[0-9]' test.txt
aaa
bbb
ccc
过滤以“#”开头的行再输出
# grep -v '^#' test.txt
aaa
bbb
ccc
12345678
过滤所有空行和以“#”开头的行再输出 如:
# vi test1.txt
111
222
333
#123
abc
# grep -v ‘^#’ test1.txt |grep -v '^$' “^$”表示空行
111
222
333
abc
输出不以某英文字母开头的行
[^字符] 表示除[]内字符之外的字符
# grep ‘^[^a-zA-Z]’ test1.txt
111
222
333
#123
# grep ‘[^a-zA-Z]’ test1.txt
111
222
333
#123
输出含任意一个字符和重复字符
# grep '#..3' test1.txt
#123
# grep ‘11*’ test1.txt
111
#123
# grep '.*' test1.txt
111
222
333
#123
abc
# grep '.*' test1.txt |wc -l ".*"表示零个或多个任意字符,空行也包含在内
6
# wc -l text1.txt
6
# grep ‘1\{2\}’ test1.txt
111
- egrep
# egrep '1+' test1.txt
111
#123
# egrep '1?' test.txt
111
222
333
#123
abc
# grep '111|222' test1.txt
111
222
# egrep '(#)|3' test1.txt
333
#123