免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 3507 | 回复: 23

[文本处理] 特別行提取 [复制链接]

论坛徽章:
0
发表于 2014-07-21 09:17 |显示全部楼层
本帖最后由 play9091 于 2014-07-21 09:31 编辑

求教各位先進……

資料:
  1. Feature Id            : CXC4020054
  2. Start Date            : 2014-06-23
  3. Stop Date             : 9999-12-31

  4. Feature Id            : CXC4020065
  5. Start Date            : 2014-06-23
  6. Stop Date             : 2014-08-06

  7. Feature Id            : CXC4030042
  8. Start Date            : 2014-06-23
  9. Stop Date             : 9999-12-31
复制代码
而我想要提取 'CXC4020065' 往後數的第二行:'Stop Date             : 2014-08-06'

我用 grep 'CXC4020065' ny0000.log -A 2 會顯示出三行,要怎麼樣子只顯示一行呢?

论坛徽章:
742
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
发表于 2014-07-21 09:35 |显示全部楼层
回复 1# play9091
  1. grep 'CXC4020065' -A 2 ny0000.log|sed '$!d'
  2. Stop Date             : 2014-08-06
复制代码

论坛徽章:
0
发表于 2014-07-21 09:35 |显示全部楼层
  1. sed -n '/CXC4020065/{n;n;p;q}' data
复制代码

论坛徽章:
0
发表于 2014-07-21 09:43 |显示全部楼层
回复 2# Herowinter


    求教 sed '$!d' 這是什麼意思?

论坛徽章:
742
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
发表于 2014-07-21 09:51 |显示全部楼层
回复 4# play9091

删除非末尾行的模式空间的内容,即只显示末尾行。
   

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
发表于 2014-07-21 10:18 |显示全部楼层
  1. awk '/CXC4020065/{k=1}k&&k++==3'
复制代码
  1. sed -n '/CXC4020065/{n;n;p;q}'
复制代码

论坛徽章:
0
发表于 2014-07-21 10:41 |显示全部楼层
本帖最后由 play9091 于 2014-07-21 10:43 编辑

回复 6# yestreenstars


    sed 後面 {} 裡面的東西是什麼意思啊!我想只用 sed 的效率會比上面用管線式的好些……
等會有上萬筆的資料要查……

{n;n;p;q}
n = 換行,一共二次
p = print
q = exit

是這樣子嗎?

论坛徽章:
3
酉鸡
日期:2014-04-23 17:17:56丑牛
日期:2014-05-08 11:41:302015亚冠之德黑兰石油
日期:2015-08-03 11:14:27
发表于 2014-07-21 10:46 |显示全部楼层
这样也算吧
cat file | grep 'CXC4020065' -A 2 | tail -n 1
Stop Date             : 2014-08-06

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
发表于 2014-07-21 10:48 |显示全部楼层
回复 7# play9091

n就是读取下一行到模式空间~
   

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
发表于 2014-07-21 10:59 |显示全部楼层
回复 1# play9091

try this way to easy to know what you want?

$ awk -vid="CXC4020065" -vd="Stop" -F' +: +' '/^Feature Id/{seg=$2==id?1:0}seg{if($0~"^"d)print $2}' FILE
2014-08-06

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP