免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: jyl980431
打印 上一主题 下一主题

紧急求助,文件处理的问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-02-26 17:59 |只看该作者
原帖由 飞鸿无痕 于 2009-2-26 17:10 发表
awk -F '|' '{if($4!~/[ ]+/) print $1"|~"$4}'  urfile > newfile
file就是生成的新文件!!!


第四字段不为空,不能用$4!~/[ ]+/
如果用这个正则,$4="x y"这样有内容但中间带空格的就不符合了,跟我开始那个正则一样不符合

论坛徽章:
0
12 [报告]
发表于 2009-02-26 20:25 |只看该作者
多谢各位上面的解答,现在还有一个问题,就是还有一种情况要判断两个字段,当第五个字段大于-1并且第六个字段有数字,则记录这条数据。我按照上面的写法写了一下,如下:
13312345678|2|3|4|-1|      |     |#
13312345678|2|3|4|2008|9001|       |#

得到:
13312345678|~2008|~9001|~       |~1
下面是我写的
awk -F'|' '{if ($5 > -1 && $6~/[0-9]+/) print $1"|~"$5"|~$6"|~"$7"|~1"}'
问题一:有没有比上面我写的效率更高的写法
问题二:由于第7个字段大部分为空,不知道有没有什么写法可以把$7的空格去掉,然后得到如下结果
13312345678|~2008|~9001|~|~1

论坛徽章:
0
13 [报告]
发表于 2009-02-26 20:40 |只看该作者
还有人在么?真是急死人了

论坛徽章:
0
14 [报告]
发表于 2009-02-26 20:58 |只看该作者

回复 #13 jyl980431 的帖子

既然第7字段肯定都是空
awk -F'|' '$5 > -1 && $6~/[0-9]/ {print $1"|~"$5"|~$6"|~|~1"}'

论坛徽章:
0
15 [报告]
发表于 2009-02-26 20:59 |只看该作者
第七个字段是个描述信息,有可能为空,如果用户设置了描述信息,那么就不为空

论坛徽章:
9
2015亚冠之阿尔纳斯尔
日期:2015-09-10 16:21:162015亚冠之塔什干火车头
日期:2015-07-01 16:23:022015年亚洲杯之巴勒斯坦
日期:2015-04-20 17:19:46子鼠
日期:2014-11-13 09:51:26未羊
日期:2014-08-28 18:13:36技术图书徽章
日期:2014-02-21 09:30:15酉鸡
日期:2014-01-14 11:12:49天蝎座
日期:2013-12-09 17:56:53平安夜徽章
日期:2015-12-26 00:06:30
16 [报告]
发表于 2009-02-26 21:00 |只看该作者
原帖由 jyl980431 于 2009-2-26 20:25 发表
多谢各位上面的解答,现在还有一个问题,就是还有一种情况要判断两个字段,当第五个字段大于-1并且第六个字段有数字,则记录这条数据。我按照上面的写法写了一下,如下:
13312345678|2|3|4|-1|      |     |#
13312345678|2|3|4|2008|9001|       |#

得到:
13312345678|~2008|~9001|~       |~1
下面是我写的
awk -F'|' '{if ($5 > -1 && $6~/[0-9]+/) print $1"|~"$5"|~$6"|~"$7"|~1"}'
问题一:有没有比上面我写的效率更高的写法
问题二:由于第7个字段大部分为空,不知道有没有什么写法可以把$7的空格去掉,然后得到如下结果
13312345678|~2008|~9001|~|~1


awk -F\| '$5>-1 && $6+0!=0{print $1"|~"$5"|~"$6"|~|~1"}' urfile > newfile

论坛徽章:
0
17 [报告]
发表于 2009-02-26 21:14 |只看该作者

回复 #15 jyl980431 的帖子

第7字段数据是如何的,有什么规律啊?

论坛徽章:
0
18 [报告]
发表于 2009-02-26 21:17 |只看该作者
要不这样,再处理一下,如果第7字段描述信息内容中无空格的话
awk -F'|' '$5 > -1 && $6~/[0-9]/{print $1"|~"$5"|~$6"|~"$7"|~1"}' | awk '{print $1$2}'

[ 本帖最后由 ywlscpl 于 2009-2-26 21:18 编辑 ]

论坛徽章:
0
19 [报告]
发表于 2009-02-26 22:15 |只看该作者
问题二:由于第7个字段大部分为空,不知道有没有什么写法可以把$7的空格去掉,然后得到如下结果

awk '{gsub(" ","",$7);print $7}' file
具体自己可以改了

论坛徽章:
0
20 [报告]
发表于 2009-02-26 23:32 |只看该作者
多谢楼上各位了,协商了一下,去掉了对第七个字段的读取
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP