现在的位置: 首页 > 综合 > 正文

sed 常用正则表达式

2012年11月09日 ⁄ 综合 ⁄ 共 1647字 ⁄ 字号 评论关闭

1.一个比较实用的正则表达式
匹配html的嵌入代码 

<[^>]*>

匹配[....]的嵌入码

 \[[^]]\{1,\}\]

删除仅由空字符组成的行

sed '/^[[:space:]]*$/d' filename

匹配html标签

/\(<[^>]*>\)/

例如:从html文件中剔除html标签

sed 's/\(<[^>]*>\)//g;/^[[:space:]]*$/d'  file.html

例如:要从下列代码中去除"[]"及其中包括的代码

[b:4c6c2a6554][color=red:4c6c2a6554]一. 替换[/color:4c6c2a6554][/b:4c6c2a6554]

sed 's/\[[^]]\{1,\}\]//g' filename

匹配日期:

Month, Day, Year [A-Z][a-z]\{3,9\}, [0-9]\{1,2\}, [0-9]\{4\}

2003-01-28 或 2003.10.18 或 2003/10/10 或 2003 10 10

\([0-9]\{4\}[ /-.][0-2][0-9][ /-.][0-3][0-9]\)

匹配IP地址

\([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\)

\(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\)

匹配数字串

[-+]*[0-9]\{1,\} 整数

[-+]*[0-9]\{1,\}\.[0-9]\{1,\}  浮点数

从字串中解析出两个子串(前2各字符和后9个字符) 

echo "WeLoveChinaUnix"|sed -e 'H;s/\(..\).*/\1/;x;s/.*\(.\{9\}\)$/\1/;x;G;s/\n/ /' 

We ChinaUnix 

分解日期串 

echo 20030922|sed 's/\(....\)\(..\)\(..\)/\1 \2 \3/'|read year month day 

echo $year $month $day 

文件内容倒序输出

sed '1!G;h;$!d'  oldfile >newfile




sed的s命令用来做正则替换。可以使用的正则表达式: 位置 ^: 表示句首. 如 ^abc 表示以 abc 开始的句子. $: 表示句尾. 如 abc$ 表示以 abc 结尾的句子. \<: 表示词首. 如 \<abc 表示以 abc 开始的词. \>: 表示词尾. 如 abc\> 表示以 abc 结尾的词. 数量 以下为数量控制符号,专门用来表示前一个 char. set 的出现次数 常见的有: *: 表示前一个 char. set 的出现次数为 0 或多次. 如 ab*c 表示 a 与 c 之间可有 0 或多个 b 存在. ?: 表示前一个 char. set 的出现次数为 0 或 1 次. 如 ab?c 表示 a 与 c 之间可有 0 或 1个 b 存在. +: 表示前一个 char. set 的出现次数为 1 或多次. 如 ab+c 表示 a 与 c 之间可有 1 或多个 b 存在. {n}: 表示前一个 char. set 的出现次数必须为 n 次. 如 ab{3,}c 表示 a 与 c 之间必须有 3 个 b 存在.{n,}: 表示前一个 char. set 的出现次数至少为 n 次. 如 ab{3,}c 表示 a 与 c 之间至少有 3 个 b 存在. {n,m}: 表示前一个 char. set 的出现次数为 n 到 m 次. 如 ab{3,5}c 表示 a 与 c 之间有 3 到 5 个 b 存在. 字符集 . 任意字符 [:alnum:] 字母数字 [a-z A-Z 0-9] [:alpha:] 字母 [a-z A-Z] [:blank:] 空格或制表键 [:cntrl:] 任何控制字符 [:digit:] 数字 [0-9] [:graph:] 任何可视字符(无空格) [:lower:] 小写 [a-z] [:print:] 非控制字符 [:punct:] 标点字符 [:space:] 空格 [:upper:] 大写 [A-Z] [:xdigit:] 十六进制数字 [0-9 a-f A-F]

转义 使用\做转义,比如 \/ 表示 /

\( \) 之间的可以在后面使用 \1 \2 等做替换,看第几次\( \)内容配对。

抱歉!评论已关闭.