分类: LINUX
2009-07-01 00:15:46
大量 UNIX 命令使用正则表达式作为参数。从技术角度而言,正则表达式 是表示某种模式的字符串(也就是说,由字母、数字和符号组成的字符序列),用于定义零或更长的字符串。正则表达式使用元字符(例如,星号 [*] 和问号 [?])来匹配其他字符串的部分或全部内容。正则表达式不一定包含通配符,但通配符可以使正则表达式在搜索模式和处理文件时发挥更大的作用。表 1 显示了一些基本正则表达式序列。
| 序列 | 说明 |
|---|---|
脱字符 (^) |
匹配出现在行首的表达式,例如 ^A |
美元符号 ($) |
匹配出现在行末的表达式,例如 A$ |
反斜杠 (\) |
取消下一个字符的特殊含义,例如 \^ |
方括号 ([]) |
匹配括起来的任一字符,例如 [aeiou](使用连字符 [-] 表示范围,例如 [0-9])。 |
[^ ] |
匹配除括起来字符以外的任一字符,例如 [^0-9] |
句点 (.) |
匹配除行尾之外的任意单个字符 |
星号 (*) |
匹配零个或多个前驱字符或表达式 |
\{x,y\} |
匹配出现过 x 到 y 个和前面相同的内容 |
\{x\} |
精确匹配出现过 x 个和前面相同的内容 |
\{x,\} |
匹配出现过 x 个或更多和前面相同的内容 |
清单显示了与 grep 命令一起使用的一些基本正则表达式。
$ # Lists your mail
$ grep '^From: ' /usr/mail/$USER
$ # Any line with at least one letter
$ grep '[a-zA-Z]' search-file.txt
$ # Anything not a letter or number
$ grep '[^a-zA-Z0-9] search-file.txt
$ # Find phone numbers in the form 999-9999
$ grep '[0-9]\{3\}-[0-9]\{4\}' search-file.txt
$ # Find lines with exactly one character
$ grep '^.$' search-file.txt
$ # Find any line that starts with a period "."
$ grep '^\.' search-file.txt
$ # Find lines that start with a "." and 2 lowercase letters
$ grep '^\.[a-z][a-z]' search-file.txt
|