sed 常用正则表达式

来源:互联网 发布:java同步synchronized 编辑:程序博客网 时间:2024/05/22 06:55
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 等做替换,看第几次\( \)内容配对。

原创粉丝点击