|
基本元字符集及含义:
^ | 只匹配行首 | $ | 只匹配行尾 | * | 匹配任意个字符 | [ ] | 匹配[ ]内字符。可以是一个单字符,也可以是字符序列。可以用 - 表示[ ]内字符序列范围,如[a-d]代替[abcd] | \ | 用来屏蔽一个元字符的特殊含义 | . | 匹配任意单字符 | pattern\{n\} | 用来匹配前面 pattern 出现次数。n 为次数 | pattern\{n, \} | 含义同上,但次数最少为n | pattern\{n, m\} | 含义同上,但 pattern 出现次数在 n 与 m 之间 |
^ 和 . 的使用: [beyes@beyes-groad ~]$ ls -l |grep ^-|grep ...x..x..x
-rwxrwxrwx 1 beyes beyes 0 2月 27 14:46 aa2.txt
-rwxrwxrwx 1 beyes beyes 0 2月 27 14:46 aa3.txt
-rwxrwxrwx 1 beyes beyes 0 2月 27 14:46 aa4.txt
-rwxrwxrwx 1 beyes beyes 0 2月 27 14:46 a
上面,第 1 个 grep 里过滤掉目录后,剩下的都是普通文件。然后,第 2 个 grep 里过滤出文件属性中3个组都具有执行的文件。
匹配空白行使用 ^$
因为 ^ 匹配行首,而 $ 匹配行尾,而 ^$ 表示 ^ 与 $ 之间没有内容,即为匹配了一个空行。
使用 \{\} 匹配模
现在假设有一文本文件 regular.txt,其中的内容为: [beyes@beyes-groad ~]$ cat regular.txt
AAB
HELLO
WORLD
ABACD
CDMAAB
WAABCOK
KKOOPP
OKDLFKAAAAB
DI3IOKAAAAAAAAB
93IJKLDFALAAAB
DF903KJBAAB
DFK23KLDJKFAKAAAAB
D893KA
DFAKDFAAB
1、用 A\{2\}B 找出匹配 AAB 模式的行: [beyes@beyes-groad ~]$ cat regular.txt |grep "A\{2\}B"
AAB
CDMAAB
WAABCOK
OKDLFKAAAAB
DI3IOKAAAAAAAAB
93IJKLDFALAAAB
DF903KJBAAB
DFK23KLDJKFAKAAAAB
DFAKDFAAB
2、用 A\{4,\}B 匹配 A 至少要连续出现 4 次且后接字母 B 的行: [beyes@beyes-groad ~]$ cat regular.txt |grep "A\{4,\}B"
OKDLFKAAAAB
DI3IOKAAAAAAAAB
DFK23KLDJKFAKAAAAB
3、用 A\{3,4\}B 匹配连续出现 A 字符 3 到 4 次之间(少于3不行)并且后接字母 B 的行: [beyes@beyes-groad ~]$ cat regular.txt |grep "A\{3,4\}B"
OKDLFKAAAAB
DI3IOKAAAAAAAAB
93IJKLDFALAAAB
DFK23KLDJKFAKAAAAB |
|