免费注册 查看新帖 |

Chinaunix

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

请求帮助编辑一个文本处理的shell  关闭 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-03-10 22:06 |只看该作者 |倒序浏览
这里有一文件:ww.txt
其中内容如下:
   wang|03/07/2004|104950|100|
    zhang|03/07/2004|123224|200|
    he|02/01/2004|85012|350|
           ......
现在,我需要将以上"ww.txt"中内容改为:
   wang|2004-03-07 10:49:50|100
    zhang|2004-03-07 12:32:24|200
    he|2004-02-01 8:50:12|350
                  ......
   如何能够办到啊?
  请高手帮忙,我对shell编程不熟悉,又急于解决以上问题,求救啊!!!

论坛徽章:
0
2 [报告]
发表于 2004-03-10 23:19 |只看该作者

请求帮助编辑一个文本处理的shell

第三个域有些难度

论坛徽章:
7
荣誉版主
日期:2011-11-23 16:44:17子鼠
日期:2014-07-24 15:38:07狮子座
日期:2014-07-24 11:00:54巨蟹座
日期:2014-07-21 19:03:10双子座
日期:2014-05-22 12:00:09卯兔
日期:2014-05-08 19:43:17卯兔
日期:2014-08-22 13:39:09
3 [报告]
发表于 2004-03-10 23:38 |只看该作者

请求帮助编辑一个文本处理的shell

句子有点长,不过测试通过。
  1. awk '{split($0,a,"[|/]");print a[1]"|"a[4]"-"a[2]"-"a[3]" "substr(a[5],1,2)":"substr(a[5],3,2)":"substr(a[5
  2. ],5,2)"|"a[6]}' file
复制代码

论坛徽章:
0
4 [报告]
发表于 2004-03-11 00:04 |只看该作者

请求帮助编辑一个文本处理的shell

007版主,有问题吧 这是我按您的操作如下:
wang|2004-03-07 10:49:50|100
zhang|2004-03-07 12:32:24|200
he|2004-02-01 85:01:2|350

|--:
应该是8:50:12而不是85:01:2呀

论坛徽章:
7
荣誉版主
日期:2011-11-23 16:44:17子鼠
日期:2014-07-24 15:38:07狮子座
日期:2014-07-24 11:00:54巨蟹座
日期:2014-07-21 19:03:10双子座
日期:2014-05-22 12:00:09卯兔
日期:2014-05-08 19:43:17卯兔
日期:2014-08-22 13:39:09
5 [报告]
发表于 2004-03-11 00:29 |只看该作者

请求帮助编辑一个文本处理的shell

疏忽了。这样的话有点复杂,该不会有这样的吧?
r2007|03/10/2004|1234|350|
应该是下面那一个?
r2007|2004-03-10 12:3:4|350
r2007|2004-03-10 1:2:34|350
r2007|2004-03-10 1:23:4|350
如此就没辙了^_^

论坛徽章:
0
6 [报告]
发表于 2004-03-11 00:40 |只看该作者

请求帮助编辑一个文本处理的shell

原帖由 "r2007" 发表:
疏忽了。这样的话有点复杂,该不会有这样的吧?
r2007|03/10/2004|1234|350|
应该是下面那一个?
r2007|2004-03-10 12:3:4|350
r2007|2004-03-10 1:2:34|350
r2007|2004-03-10 1:23:4|350
如此就没辙了^_^
是很头疼... ,关键要看那个时间格式的规律!

论坛徽章:
0
7 [报告]
发表于 2004-03-11 01:47 |只看该作者

请求帮助编辑一个文本处理的shell

如果时间格式固定为 HH:MM:SS的话,就很容易的多!我写的虽然笨了些,但好理解哟

  1. $cat list|awk -F\| '{gsub(/\//,"-");print $1,$2,$4}' >lista
  2. $cat list|awk -F\| '{print $3}'|rev|sed 's/../&:/g;s/:$//g'|rev >listb
  3. $paste lista listb|awk 'BEGIN{OFS="|"}{print $1,$2,$4,$3}'|awk '{gsub(/2004\|/,"2004 ");print}'
  4. wang|03-07-2004 10:49:50|100
  5. zhang|03-07-2004 12:32:24|200
  6. he|02-01-2004 8:50:12|350
  7. $rm lista listb
复制代码

论坛徽章:
0
8 [报告]
发表于 2004-03-11 09:54 |只看该作者

请求帮助编辑一个文本处理的shell

第三列有歧义哎

论坛徽章:
0
9 [报告]
发表于 2004-03-11 14:51 |只看该作者

请求帮助编辑一个文本处理的shell

shell好象也还很好用啊

论坛徽章:
0
10 [报告]
发表于 2004-03-11 22:46 |只看该作者

请求帮助编辑一个文本处理的shell

原帖由 "wzy" 发表:
这里有一文件:ww.txt
其中内容如下:
   wang|03/07/2004|104950|100|
    zhang|03/07/2004|123224|200|
    he|02/01/2004|85012|350|
           ......
现在,我需要将以上"ww.txt"中内容改为:
   w..........

在该例子中,如果第三列格式为HH:MM:SS或者H:MM:SS(只有小时小于10时才是,如8:50:12,不会有12:7:31类的格式。当出现85012格式时,首先在其前面加“0”,改为085012形式,然后再处理为如下形式,各位老大,如何办呢?
wang|2004-03-07 10:49:50|100
zhang|2004-03-07 12:32:24|200
he|2004-02-01 08:50:12|350
......
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP