免费注册 查看新帖 |

Chinaunix

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

问一个AWK的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-11-17 20:12 |只看该作者 |倒序浏览
有一个文本文件,内容如下:

生产科      123.5600浪子集团
原料科     5254.2500浪子集团
人事处         5.8900浪子集团

我想用AWK得到如下形式的文件,如何做?

生产科     123.56
原料科    5254.25
人事处        5.89

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2003-11-17 21:37 |只看该作者

问一个AWK的问题

  1. cat datafile|while read a b
  2. do
  3.     b=`echo $b|sed 's/[^0-9\.]//g'`
  4.     echo $a $b
  5. done
复制代码

论坛徽章:
0
3 [报告]
发表于 2003-11-18 00:43 |只看该作者

问一个AWK的问题

老班呀,汉字前的两个零也要去掉。
而且能不能用AWK解决,我好不容易把AWK看得有点眉目了。SED 我还没有入门。
我现在的思路是先计算第二个字段的长度,然后减去10 (因为“00浪子集团”这几个字符的长度是10),再用substr函数得到第二个字段的数字部分。有点类似如下命令:

awk a=length($2)-10 '{print substr($2,1,'$a')}'

但行出错,我不知道对变量a如何处理才能让它生效。

论坛徽章:
0
4 [报告]
发表于 2003-11-18 00:54 |只看该作者

问一个AWK的问题

汉字前面都是两个0吗?!

论坛徽章:
0
5 [报告]
发表于 2003-11-18 01:15 |只看该作者

问一个AWK的问题

是的,每个这“浪子集团”这四个字前面都有“00”

论坛徽章:
0
6 [报告]
发表于 2003-11-18 01:19 |只看该作者

问一个AWK的问题

那把00作为分隔符不就可以吗?!

  1. awk -F"00" '{print $1}' urfile
  2. 生产科 123.56
  3. 原料科 5254.25
  4. 人事处 5.89
复制代码

论坛徽章:
0
7 [报告]
发表于 2003-11-18 01:36 |只看该作者

问一个AWK的问题

高,真是一句点醒梦中人。我总是在想如何处理它,却没有想过把它当分隔符。

论坛徽章:
0
8 [报告]
发表于 2003-11-18 01:42 |只看该作者

问一个AWK的问题

试试这些小玩意儿~~

  1. tr '00' ' '<urfile|cut -f1-2 -d' '
复制代码

论坛徽章:
0
9 [报告]
发表于 2003-11-18 01:55 |只看该作者

问一个AWK的问题

不对呀,如果第二个字段的数字部分是这样的:

12002500.0000

那我不就惨了?

论坛徽章:
0
10 [报告]
发表于 2003-11-18 02:09 |只看该作者

问一个AWK的问题

脑筋就不会多转转
  1. awk -F"00浪子" '{print $1}' urfile
  2. 生产科 12002500.56
  3. 原料科 500254.25
  4. 人事处 5.809
复制代码
BTW:怎么感觉自己有些起哄的味道呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP