免费注册 查看新帖 |

Chinaunix

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

请教一个工作中遇到的问题 与awk有关 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-10-20 14:54 |只看该作者 |倒序浏览
有一个文本文件list1.txt,内容如下:
30022 30024
40044 40045
20011 20011

要求利用Linux命令处理后生成文件list2.txt,内容如下:
30022
30023
30024
40044
40045
20011

  简要说明:list1.txt为现有文件,该文件有两个字段,$1和$2,当$1<$2时,输出$1

、$2、$1和$2之间的数字;当$1=$2时,输出$1或$2都可以;以下是我试着写的一条命令

,由于能力有限,没能实现想要的结果,还请高手指点一二,小弟在这先谢谢了!

awk '{for (i=1;i<=NR;i++)
       if ($1<$2) {print $1;$1=$1+1} else {print $2}
     }' list1.txt >> list2.txt

论坛徽章:
0
2 [报告]
发表于 2010-10-26 09:41 |只看该作者
回复 1# wfyvfhpwxf


{
        print $1
        val = $1
        while ($2 > val) {
                print val+1
                val++
           }
}

论坛徽章:
0
3 [报告]
发表于 2010-10-26 10:47 |只看该作者
  1. [lchen0@pek-dsm-d1 ~]$ cat log
  2. 30022 30024
  3. 40044 40045
  4. 20011 20011
  5. [lchen0@pek-dsm-d1 ~]$ awk '$1<$2{for(i=$1;i<=$2;i++) print i}$1==$2{print $1}' log
  6. 30022
  7. 30023
  8. 30024
  9. 40044
  10. 40045
  11. 20011
复制代码

论坛徽章:
0
4 [报告]
发表于 2010-10-26 11:03 |只看该作者

  1. $ cat file1
  2. 30022 30024
  3. 40044 40045
  4. 20011 20011
  5. $ while read L ;do seq $L ;done <file1  
  6. 30022
  7. 30023
  8. 30024
  9. 40044
  10. 40045
  11. 20011

复制代码

论坛徽章:
0
5 [报告]
发表于 2010-10-26 16:52 |只看该作者
回复 4# yanu


    牛逼!

论坛徽章:
1
白羊座
日期:2014-01-14 17:31:01
6 [报告]
发表于 2010-10-27 08:44 |只看该作者
恩,都不错。。。牛
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP