Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2991871
  • 博文数量: 272
  • 博客积分: 5544
  • 博客等级: 大校
  • 技术积分: 5496
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-08 00:48
个人简介

  每个人都要有一个骨灰级的爱好,不为金钱,而纯粹是为了在这个领域享受追寻真理的快乐。

文章分类

全部博文(272)

文章存档

2015年(2)

2014年(5)

2013年(25)

2012年(58)

2011年(182)

分类: LINUX

2011-05-14 16:10:10

文本:

Hello World
Welcome to the world of regexp!

现在要去掉所有的HTML标签,使输出结果为:
Hello World
Welcome to the world of regexp!

 

  1. sed 's/<[^>]*>//g' file

[解析]
  思路是替换<.*>的为空就等于剔除了所有这些符号,重点在于 [^>] 按照正则贪婪匹配的原则,如果只是排除<.*> 这样的内容,它只会匹配第一个 < 和最后一个 > 也就是改行的全部内容,所以在这个内容当中不能再出现< >这2个符号,所以排除一个即可。星号是个数量单位,可以理解为零或多个。

 

 

  1. awk -vRS='<[^>]*>' -vORS="" '1' file

[解析]
  在awk中默认的记录分割符是换行,在这里设置 < > 为记录分割符,输出的时候默认的输出记录分割符是换行,这里我们把它设置为空,即不再输出空行了。最后pattern为1,即是打印全行。

 

 

  1. awk -vRS='<[^>]*>' 'NF' file

[解析]
  这句看似和上句差不多,实质上有很大的区别,NF 对于不输出空行是个妙用。这句和上句最大的区别就在于没有设置 -vORS="" ,而结果上还是和上一句完全一样呢?当是空行NF是为0,在pattern里0是条件为假,则不会执行后面省略的{print $0},所以不会输出空行。

 

 

  1. awk -F"<[^>]*>" -vOFS="" 'NF+=0' file
[解析]
  设置 < > 为字段分割符,输出字段分割符为空,必须对字段进行操作时OFS才会起作用,这里我们就用到了NF+=0,它不光是对字段进行了操作,而且可以不显示文本中的空行,一箭双雕啊。
阅读(5195) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~