免费注册 查看新帖 |

Chinaunix

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

大伙看看这个文件怎么处理呢 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2008-06-03 22:47 |只看该作者
感觉好难哦

论坛徽章:
3
天秤座
日期:2014-10-29 11:37:572015元宵节徽章
日期:2015-03-06 15:50:39NBA常规赛纪念章
日期:2015-05-04 22:32:03
22 [报告]
发表于 2008-06-03 22:53 |只看该作者
原帖由 blackold 于 2008-6-3 17:18 发表
只有一条记录时,命令awk -F"###" '{print $1}' file输出为一个字符串;多于一个记录时,命令的输出就包围多个\n分隔的字符串了。



请问如何在这个基础上修改一下

论坛徽章:
0
23 [报告]
发表于 2008-06-03 23:28 |只看该作者
哈哈
没想到这个帖子讨论热烈呢
之前把这帖子发到别的版去了,shell里高手真多啊。
潜心学习呢

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
24 [报告]
发表于 2008-06-04 09:17 |只看该作者

回复 #22 tomer 的帖子

可以这样修改:

  1. $ awk -F"###" '{print $2}' urfile | sed s"/|/\n/g" | paste - $(awk -F"###" '{ n = gsub(/\|/,"",$2); for ( i = 0; i <= n; i++) print $1 }' urfile)
复制代码

[ 本帖最后由 blackold 于 2008-6-4 13:40 编辑 ]

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
25 [报告]
发表于 2008-06-04 09:40 |只看该作者

回复 #20 demil 的帖子

LZ想干吗?
$ awk -F '###' 'BEGIN{dex=0;} {if (/###/) {name[dex]=$0; }else {--dex;name[dex]
=name[dex]$0;} dex++;} END{for(i in name) print name[i ];}' text.txt

只是把不合理的换行去掉吧?

论坛徽章:
0
26 [报告]
发表于 2008-06-04 10:51 |只看该作者

回复 #25 blackold 的帖子

对,想把不合理的换行去掉,将文件归类整合,有什么好方法吗?

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
27 [报告]
发表于 2008-06-04 11:15 |只看该作者

回复 #26 demil 的帖子

何必用awk呢?大材小用了吧。
可以用sed。

另外你的代码也太复杂了。


  1. $ awk '{if ( /###/) array[NR] = $0; else array[NR-1] = array[NR-1]$0 } END { for (i in array) print i,array[i]}' urfile
复制代码

论坛徽章:
0
28 [报告]
发表于 2008-06-04 11:24 |只看该作者
thanks!
学习中

论坛徽章:
0
29 [报告]
发表于 2008-06-04 11:39 |只看该作者
我这还有个问题
大伙看看怎么处理啊

文件格式:
http://3g.pp.cn/res/mp3/64/90/1198900226490.mp3###%E6%AE%8B%E5%BF%B5
http://3g.pp.cn/res/mp3/68/73/1123134926873.mp3###%E6%B2%A7%E6%B5%B7%E4%B8%80%E5%A3%B0%E7%AC%91

这是我从站点搜索到的歌,###后面带的是这个歌的歌名,可是从网站上提取的关键字是十六进制的,我怎样通过awk把它转码过来,但是不破坏文件格式呢

论坛徽章:
0
30 [报告]
发表于 2008-06-04 11:45 |只看该作者
我用个转码小程序,在awk中用system()调用它,输出结果老是在每行开头,不知道是不是跟system调用有关啊,这个能不能不调用小程序直接用awk解决呢。

代码是这样的:
awk '{system("./b.out" " " "\"" $0 "\"")|getline tmp;print tmp;}'

输出结果却是:
残念http://3g.pp.cn/res/mp3/64/90/1198900226490.mp3###
沧海一声笑http://3g.pp.cn/res/mp3/68/73/1123134926873.mp3###

[ 本帖最后由 lonely4324 于 2008-6-4 12:21 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP