匹配字符串
[root@localhost ~]# grep 'root /etc/passwd
[root@localhost ~]# sed -n '/root/'p /etc/passwd
[root@localhost ~]# awk '/root/' /etc/passwd
[root@localhost ~]# awk -F':' '$1~/root/' /etc/passwd
匹配包含数字0到9的行
[root@localhost ~]# grep '[0-9]' /etc/passwd
[root@localhost ~]# sed -n '/[0-9]/'p /etc/passwd
[root@localhost ~]# awk '/[0-9]/' /etc/passwd
[root@localhost ~]# awk -F':' '$1~/[0-9]/' /etc/passwd
[0-9a-zA-Z]
[root@localhost ~]# grep '[0-9a-zA-Z]' /etc/passwd
[root@localhost ~]# sed -n '/[0-9a-zA-Z]/'p /etc/passwd
# 必须LANG=c
[root@localhost ~]# awk '/[0-9a-zA-Z]/' /etc/passwd
# 必须LANG=c
[root@localhost ~]# awk -F':' '$1~/[0-9a-zA-Z]/' /etc/passwd
[aN]带小写字母a或大写字母N的行
[root@localhost ~]# grep '[aN]' /etc/passwd
[root@localhost ~]# sed -n '/[aN]/'p /etc/passwd
[root@localhost ~]# awk '/[aN]/' /etc/passwd
[root@localhost ~]# awk -F':' '$1~/[aN]/' /etc/passwd
^[a-z]以小写字母开头的行
[root@localhost ~]# grep '^[a-z]' /etc/passwd
[root@localhost ~]# sed -n '/^[a-z]/'p /etc/passwd
# 必须LANG=c
[root@localhost ~]# awk '/^[a-z]/' /etc/passwd
# 必须LANG=c
[root@localhost ~]# awk -F':' '$1~/^[a-z]/' /etc/passwd
[^0-9]包含非数字的行
[root@localhost ~]# grep '[^0-9]' /etc/passwd
[root@localhost ~]# sed -n '/[0-9]/'p /etc/passwd
必须LANG=c
[root@localhost ~]# awk '/[^0-9]/' /etc/passwd
必须LANG=c
[root@localhost ~]# awk -F':' '$1~/[^0-9]/' /etc/passwd
[a-z]$以小写字母结尾的行
[root@localhost ~]# grep '[a-z]$' /etc/passwd
[root@localhost ~]# sed -n '/[a-z]$/'p /etc/passwd
必须LANG=c
[root@localhost ~]# awk '/[a-z]$/' /etc/passwd
必须LANG=c
[root@localhost ~]# awk -F':' '$1~/[a-z]$/' /etc/passwd
^$ 空白行
[root@localhost ~]# grep '^$' /etc/passwd
[root@localhost ~]# sed -n '/^$/'p /etc/passwd
[root@localhost ~]# awk '/^$/' /etc/passwd
[root@localhost ~]# awk -F':' '$1~/^$/' /etc/passwd
r.o 这里的.表示任意一个字符
[root@localhost ~]# grep 'r.o' /etc/passwd
[root@localhost ~]# sed -n '/r.o/'p /etc/passwd
[root@localhost ~]# awk '/r.o/' /etc/passwd
[root@localhost ~]# awk -F':' '$1~/r,o/' /etc/passwd
r\.o 这里的.仅仅表示.
[root@localhost ~]# grep 'r\.o' /etc/passwd
[root@localhost ~]# sed -n '/r\.o/'p /etc/passwd
[root@localhost ~]# awk '/r\.o/' /etc/passwd
[root@localhost ~]# awk -F':' '$1~/r\.o/' /etc/passwd
r*o 重复*号前面的字符零次或多次
[root@localhost ~]# grep 'r*o' /etc/passwd
[root@localhost ~]# sed -n '/r*o/'p /etc/passwd
[root@localhost ~]# awk '/r*o/' /etc/passwd
[root@localhost ~]# awk -F':' '$1~/r*o/' /etc/passwd
r\*o 这里的*仅仅表示*
[root@localhost ~]# grep 'r\*o' /etc/passwd
[root@localhost ~]# sed -n '/r\*o/'p /etc/passwd
[root@localhost ~]# awk '/r\*o/'/etc/passwd
[root@localhost ~]# awk -F':' '$1~/r\*o/'/etc/passwd
r?o 这里的?仅仅表示?
[root@localhost ~]# grep 'r?o' /etc/passwd
[root@localhost ~]# sed -n '/r?o/'p /etc/passwd
[root@localhost ~]# awk '/r?o/' /etc/passwd 用在awk表示重复?前的字符零次或多次
[root@localhost ~]# awk -F':' '$1~/r?o/' /etc/passwd 用在awk表示重复?前的字符零次或一次
r\?o 重复?号前的字符零次或一次
[root@localhost ~]# grep 'r\?o/' /etc/passwd
[root@localhost ~]# sed -n '/r\?o/'p /etc/passwd
[root@localhost ~]# awk '/r\?o/' /etc/passwd 用在awk仅仅表示?
[root@localhost ~]# awk -F':' '$1~/r\?o/' /etc/passwd 用在awk仅仅表示?
a+o 这里的+仅仅表示+
[root@localhost ~]# grep 'a+o' /etc/passwd
[root@localhost ~]# sed -n '/a+o/'p /etc/passwd
[root@localhost ~]# awk '/a+o/' /etc/passwd 用在awk表示重复+号前的字符一次或多次
[root@localhost ~]# awk -F':' '$1~/a+o/' /etc/passwd 用在awk表示重复+号前的字符一次或多次
a\+o 重复+号前面的字符一次或多次
[root@localhost ~]# grep 'a\+o' /etc/passwd
[root@localhost ~]# sed -n '/a\+o/'p /etc/passwd
[root@localhost ~]# awk '/a\+o/' /etc/passwd 用在awk仅仅表示+
[root@localhost ~]# awk -F':' '$1~/a\+o/' /etc/passwd 用在awk仅仅表示+
a.*o 包含字符串以a开头o结尾的行
[root@localhost ~]# grep 'a.*o' /etc/passwd
[root@localhost ~]# sed -n '/a.*o/'p /etc/passwd
[root@localhost ~]# awk '/a.*o/' /etc/passwd
[root@localhost ~]# awk -F':' '$1~/a.*o/' /etc/passwd
\(as\)\+ 字符串as作为一个整体,被重复一次或多次的行
[root@localhost ~]# grep '\(as\)\+' /etc/passwd
[root@localhost ~]# sed -n '/\(as\)\+/'p /etc/passwd
[root@localhost ~]# awk '/(as)+/' /etc/passwd
[root@localhost ~]# awk -F':' '$1~/(as)+/' /etc/passwd
\(as\)\{2,3\} 字符串as作为一个整体,被重复两次或三次的行,不适用于awk
[root@localhost ~]# grep '\(as\)\{2,3\}' /etc/passwd
[root@localhost ~]# sed -n '/\(as\)\{2,3\}/'p /etc/passwd
root\|nologin 包含root或nologin字符串的行
[root@localhost ~]# grep 'root\|nologin' /etc/passwd
[root@localhost ~]# sed -n '/root\|nologin/'p /etc/passwd
[root@localhost ~]# awk '/root|nologin/' /etc/passwd
[root@localhost ~]# awk -F':' '$1~/root|nologin/' /etc/passwd
特别注明:以上正则表达式用在grep和sed中,遇到特殊字符时需要加脱义字符\,如果用在grep -E、egrep、sed -r和awk中,无需加脱义字符,以下五行效果相同
[root@localhost ~]# grep 'root\|nologin' /etc/passwd
[root@localhost ~]# grep -E 'root|nologin' /etc/passwd
[root@localhost ~]# egrep 'root|nologin' /etc/passwd
[root@localhost ~]# sed -rn '/root|nologin/'p /etc/passwd
[root@localhost ~]# awk '/root|nologin/' /etc/passwd