grep命令
grep [-cinvABC] 'word' filename
常用选项解释:
-c : 打印符合要求的行数。
-i : 忽略大小写。
-n : 输出符合要求的行及行号。
-v : 打印不符合要求的行。
-A : 后跟数字n(有无空格都可),打印符合要求的行和下面n行。
-B : 后跟数字n,打印符合要求的行和上面n行。
-C : 后跟数字n,打印符合要求的行和上下各n行。
例:
打印包含root的行和该行下面的两行
$grep -A2 'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
打印包含root的行并输出行号
$grep -n 'root' /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
打印所有(不)包含数字的行
$grep [-v] '[0-9]' filename
在正则表达式中“^”表示行的开始,“$”表示行的结尾,“^$”则表示空行。
$grep '^[^a-zA-Z]' filename #打印不以英文字母开头的行。
“.”表示任意一个字符,“*”表示零个或多个前面的字符,“.*”表示零个或多个字符,包括空行。
$grep 'o.o*' filename
“{}”,该符号内部为数字,表示前面的字符重复的次数,但需要使用脱义字符“\”。
$grep 'o\{2\}' filename #字符o重复2次
$grep 'o\{2,4\}' filename #字符o重复2到4次
$grep 'o\{2,\}' filename #字符o重复至少2次