Chinaunix首页 | 论坛 | 博客
  • 博客访问: 227027
  • 博文数量: 65
  • 博客积分: 25
  • 博客等级: 民兵
  • 技术积分: 417
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-05 15:12
个人简介

路漫漫其修远兮,吾将上下而求索

文章分类

全部博文(65)

文章存档

2016年(1)

2015年(12)

2014年(34)

2013年(16)

2012年(2)

我的朋友

分类: LINUX

2013-05-23 17:05:32

文本:

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,它不光是对字段进行了操作,而且可以不显示文本中的空行,一箭双雕啊。
阅读(820) | 评论(0) | 转发(0) |
0

上一篇:sed 命令详解

下一篇:od 命令

给主人留下些什么吧!~~