免费注册 查看新帖 |

Chinaunix

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

[文本处理] 几条命令怎么编成一个script [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-09-26 23:16 |只看该作者 |倒序浏览
现在在用三个命令处理同一个文件,感觉有点繁琐,求告知如何将他们编成一个script
第一个是 grep -n 'WORK' FILE #这个是用来看看WORK从哪一行开始的
第二个是 awk ‘NR>=n' FILE >worklist  #这个就是从上面得到的那个行号开始,将后面的内容全部输出
第三个是 grep -A15 'PAY' FILE >paytable #这个是输出PAY之后的15行
求教~

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
2 [报告]
发表于 2013-09-26 23:31 |只看该作者
回复 1# lionsingasong


    第1、2 可以合并:

awk '/WORK/{p=1}p' FILE >worklist

写成脚本就是把命令放在一起:
  1. #!/bin/bash
  2. awk '/WORK/{p=1}p' FILE >worklist
  3. grep -A15 'PAY' FILE >paytable
复制代码

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
3 [报告]
发表于 2013-09-26 23:42 |只看该作者
本帖最后由 关阴月飞 于 2013-09-26 23:48 编辑

回复 1# lionsingasong


第一个是 grep -n 'WORK' FILE #这个是用来看看WORK从哪一行开始的
第二个是 awk ‘NR>=n' FILE >worklist  #这个就是从上面得到的那个行号开始,将后面的内容全部输出
第三个是 grep -A15 'PAY' FILE >paytable #这个是输出PAY之后的15行

可以一条命令解决:
  1. awk '/WORK/{a=1}a{print >"worklist"} /PAY/{b=NR+15}b && NR<=b{print >"paytable"}' file
复制代码

论坛徽章:
0
4 [报告]
发表于 2013-09-26 23:49 |只看该作者
回复 3# 关阴月飞

测试成功,谢谢指导~
   

论坛徽章:
0
5 [报告]
发表于 2013-09-26 23:54 |只看该作者
回复 2# 关阴月飞

谢谢~
   

论坛徽章:
0
6 [报告]
发表于 2013-09-27 00:01 |只看该作者
回复 3# 关阴月飞

这个新的命令和你之前写的这条awk '/WORK/{a=NR}a && NR>=a{print >"worklist"} /PAY/{b=NR}b && NR>=b && NR<=b+25{print >"paytable"}' file 效果是一样的

不过我有点不理解那些的意思?/WORK/ {a=1}a 这段是啥意思 怎么理解?请教一下

   

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
7 [报告]
发表于 2013-09-27 00:06 |只看该作者
回复 6# lionsingasong


    是一样的效果,只是简化了一下思路

    /WORK/{a=1}a #如果当前行中包含 "WORK" 设置变量a=1,后面的 a 写完整了就是 if(a)  求表达式真假, 如果a 值不为0或空,则表达式结果为 真。
   

论坛徽章:
0
8 [报告]
发表于 2013-09-27 00:19 |只看该作者
回复 7# 关阴月飞


    懂了,谢啦

论坛徽章:
1
巨蟹座
日期:2013-10-12 09:53:21
9 [报告]
发表于 2013-09-27 03:45 |只看该作者
关阴月飞 发表于 2013-09-27 00:06
回复 6# lionsingasong


学习学习了

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亚洲杯之阿曼
日期:2015-04-07 20:00:59
10 [报告]
发表于 2013-09-27 10:02 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP