免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3124 | 回复: 7
打印 上一主题 下一主题

求救 用shell截取段落 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-04-26 14:45 |只看该作者 |倒序浏览
<?xml version="1.0" encoding="UTF-8" ?>
- <tags>
- <metatag event="onCuePoint">
  <name>007</name>
  <timestamp>5409703</timestamp>
  </metatag>
- <metatag event="onCuePoint">
  <name>07:0091:0116</name>
  <timestamp>5441033</timestamp>
  </metatag>
- <metatag event="onCuePoint">
  <name>03:0091:0121</name>
  <timestamp>5476040</timestamp>
  </metatag>
- <metatag event="onCuePoint">
  <name>03:0091:0133</name>
  <timestamp>5493829</timestamp>
  </metatag>
- <metatag event="onCuePoint">
  <name>03:0092:0144</name>
  <timestamp>5495719</timestamp>
  </metatag>
- <metatag event="onCuePoint">
  <name>03:0095:0154</name>
  <timestamp>5499626</timestamp>
  </metatag>
- <metatag event="onCuePoint">
  <name>03:0098:0163</name>
  <timestamp>5555763</timestamp>
  </metatag>
- <metatag event="onCuePoint">
  <name>03:0101:0174</name>
  <timestamp>5556586</timestamp>
  </metatag>
- <metatag event="onCuePoint">
  <name>03:0105:0180</name>
  <timestamp>5561650</timestamp>
  </metatag>
- <metatag event="onCuePoint">
  <name>03:0112:0192</name>
  <timestamp>5595979</timestamp>
  </metatag>
- <metatag event="onCuePoint">
  <name>03:0116:0194</name>
  <timestamp>5603677</timestamp>
  </metatag>
- <metatag event="onCuePoint">
  <name>03:0119:0195</name>
  <timestamp>5613604</timestamp>
  </metatag>
- <metatag event="onCuePoint">
  <name>03:0121:0197</name>
  <timestamp>5627557</timestamp>
  </metatag>
- <metatag event="onCuePoint">
  <name>03:0122:0197</name>
  <timestamp>5635451</timestamp>
  </metatag>
- <metatag event="onCuePoint">
  <name>03:0124:0197</name>
  <timestamp>5636611</timestamp>
  </metatag>
- <metatag event="onCuePoint">
  <name>03:0125:0197</name>
  <timestamp>5639375</timestamp>
  </metatag>
- <metatag event="onCuePoint">
  <name>03:0126:0197</name>
  <timestamp>5640357</timestamp>
  </metatag>
- <metatag event="onCuePoint">
  <name>03:0127:0196</name>
  <timestamp>5645646</timestamp>
  </metatag>
- <metatag event="onCuePoint">
  <name>03:0129:0195</name>
  <timestamp>5678632</timestamp>
  </metatag>
- <metatag event="onCuePoint">
  <name>03:0130:0195</name>
  <timestamp>5679633</timestamp>
  </metatag>
- <metatag event="onCuePoint">
  <name>03:0130:0194</name>
  <timestamp>5680385</timestamp>
  </metatag>
- <metatag event="onCuePoint">
  <name>03</name>
  <timestamp>5686460</timestamp>
  </metatag>
  </tags>


文件内容是这样的 但是可能没有这样整齐 可能是一条龙的写下来 中间只有空格
我的需求是 用一个变量能代替这里面的段落 段落是已 metatag为分割的,既两个metatag之间算一段 (算上metatag)


那位大哥大神能帮下 谢谢

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
2 [报告]
发表于 2011-04-26 14:51 |只看该作者
回复 1# micmouse521


    awk -vRS='-' 'NR>1&&/metatag/{print RS$0}' file

论坛徽章:
0
3 [报告]
发表于 2011-04-26 15:03 |只看该作者
不行呀   我的文件没那么工整

</metatag>
<metatag event="onCuePoint"> <name>07:0091:0116</name><timestamp>5441033</timestamp></metatag><metatag event="onCuePoint"><name>03:0091:0121</name><timestamp>5476040</timestamp></metatag><metatag event="onCuePoint"><name>03:0091:0133</name><timestamp>5493829</timestamp></metatag><metatag event="onCuePoint"><name>03:0092:0144</name><timestamp>5495719</timestamp></metatag><metatag event="onCuePoint"><name>03:0095:0154</name><timestamp>5499626</timestamp></metatag><metatag event="onCuePoint"><name>03:0098:0163</name><timestamp>5555763</timestamp></metatag><metatag event="onCuePoint"><name>03:0101:0174</name><timestamp>5556586</timestamp></metatag><metatag event="onCuePoint"><name>03:0105:0180</name><timestamp>5561650</timestamp></metatag><metatag event="onCuePoint"><name>03:0112:0192</name><timestamp>5595979</timestamp></metatag><metatag event="onCuePoint"><name>03:0116:0194</name><timestamp>5603677</timestamp></metatag><metatag event="onCuePoint"><name>03:0119:0195</name><timestamp>5613604</timestamp></metatag><metatag event="onCuePoint"><name>03:0121:0197</name><timestamp>5627557</timestamp></metatag><metatag event="onCuePoint"><name>03:0122:0197</name><timestamp>5635451</timestamp></metatag><metatag event="onCuePoint"><name>03:0124:0197</name><timestamp>5636611</timestamp></metatag><metatag event="onCuePoint"><name>03:0125:0197</name><timestamp>5639375</timestamp></metatag><metatag event="onCuePoint"><name>03:0126:0197</name><timestamp>5640357</timestamp></metatag><metatag event="onCuePoint"><name>03:0127:0196</name><timestamp>5645646</timestamp></metatag><metatag event="onCuePoint"><name>03:0129:0195</name><timestamp>5678632</timestamp></metatag><metatag event="onCuePoint"><name>03:0130:0195</name><timestamp>5679633</timestamp></metatag><metatag event="onCuePoint"><name>03:0130:0194</name><timestamp>5680385</timestamp></metatag><metatag event="onCuePoint"><name>03</name><timestamp>5686460</timestamp></metatag></tags>

论坛徽章:
0
4 [报告]
发表于 2011-04-26 15:08 |只看该作者
用一个变量能代替这里面的段落

这句话什么意思,你那么多段落,怎么用变量代替?

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
5 [报告]
发表于 2011-04-26 15:09 |只看该作者
回复 3# micmouse521


    try:
  1. awk -vRS='<metatag' -vORS="\n" 'NR>1{print RS$0}'
复制代码

论坛徽章:
0
6 [报告]
发表于 2011-04-26 15:18 |只看该作者
太感谢了 能请问下  vrs 这三个参数都代表什么吗?

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
7 [报告]
发表于 2011-04-26 15:31 |只看该作者
回复 6# micmouse521

RS:记录分隔符(默认是一个换行符)。
ORS:输出记录分隔符(默认值是一个换行符)。

    "awk -vRS" === "awk -v RS"
    "awk -vORS" === "awk -v ORS"


给RS ORS这两个变量重新赋值

论坛徽章:
0
8 [报告]
发表于 2011-04-26 15:42 |只看该作者
收到 谢谢哈  看来还得抽空看看 awk  自己知道的只是皮毛 哎哎哎哎哎 4楼 也谢谢你
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP