免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
11 [报告]
发表于 2008-06-03 15:46 |只看该作者

回复 #9 jinl 的帖子

能具体给我说说是哪个手册吗?
或者给我个地址
谢谢哈

论坛徽章:
3
天秤座
日期:2014-10-29 11:37:572015元宵节徽章
日期:2015-03-06 15:50:39NBA常规赛纪念章
日期:2015-05-04 22:32:03
12 [报告]
发表于 2008-06-03 16:45 |只看该作者
大伙帮我看看以下语句,当只有一条记录时可以,2条记录时就报错:

awk -F"###" '{print $2}' file|sed s"/|/\n/g"|sed "s/$/ `awk -F"###" '{print $1}' file`/g"

论坛徽章:
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
13 [报告]
发表于 2008-06-03 17:18 |只看该作者

回复 #12 tomer 的帖子

只有一条记录时,命令awk -F"###" '{print $1}' file输出为一个字符串;多于一个记录时,命令的输出就包围多个\n分隔的字符串了。

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
14 [报告]
发表于 2008-06-03 17:22 |只看该作者
原帖由 lonely4324 于 2008-6-3 15:07 发表
awk -F'###' '{split($2,a,"|");for(i in a) print a,$1}' urfile

呵呵
每次都麻烦你呢。
你这段我看懂了,也是我要的效果,但是有一点就是歌曲顺序不对啊
你比如第一条记录是:苏儿真###Te Amo|天蓝过我 ...

  1. awk -F'###' '{for(i=1;i<=split($2,a,"|");i++) print a[i],$1}' urfile
复制代码


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
15 [报告]
发表于 2008-06-03 17:25 |只看该作者

回复 #14 ly5066113 的帖子

我是在ly5066113   的影响下开始学awk的,有时觉得自己的awk脚本太难看了。

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
16 [报告]
发表于 2008-06-03 17:27 |只看该作者
原帖由 blackold 于 2008-6-3 17:25 发表
我是在ly5066113   的影响下开始学awk的,有时觉得自己的awk脚本太难看了。


哦?我的影响?

论坛徽章:
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
17 [报告]
发表于 2008-06-03 17:43 |只看该作者

回复 #16 ly5066113 的帖子

对,没有说错。看见你经常发awk的贴,所以……

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
18 [报告]
发表于 2008-06-03 18:10 |只看该作者
原帖由 blackold 于 2008-6-3 17:43 发表
对,没有说错。看见你经常发awk的贴,所以……


哦,呵呵。
以前听人说过,awk和sed是文本编辑的2大利器,倚天剑、屠龙刀。
现在看来,确实如此,各有千秋,都值得好好学习。

论坛徽章:
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
19 [报告]
发表于 2008-06-03 18:27 |只看该作者

回复 #18 ly5066113 的帖子

没错,这些工具确实犀利!

论坛徽章:
0
20 [报告]
发表于 2008-06-03 19:59 |只看该作者

继续探讨

我后来想改变一下文本的格式,有的行会用换行分成两行
cat text
苏儿真###Te Amo|天蓝过我的忧郁|爱你的一切|七夕没下雨|闭上眼睛数到三|似曾相恋|当我们不在一起|不是同路人|十八(注意这里用换行)
岁|不爱就拉倒|赢了爱情输了朋友
黄鸿升###鬼混
童丽###忘记你|你在哪里|爱在何方|情逝|矜持|绿袖子|一天一万年|空白|如果云知道|我心永恒|秋意浓|在恋爱国度
留下的伤|说再见
刘美君###Dance Medley|清晨|隔|Man In The Moon|蠢动|赤裸抱月下|Give Me All Your Love, Boy|霓虹鸟|Me
dley|富士山下|我估不到|点解 - 刘美君林海峰|Dance Medley1|So Sad - 刘美君草蜢|依依|你说是甜我说苦|偷窥 - 刘美君苏永康|这双眼只望你|夜已变得骚了|事后|最后一夜|浮花|午夜情|一见钟情|最后一夜 (Ballad Version)|最后一夜 (Studio Ballad Version) (Bonus Track)
熊宝贝乐团###营火|灰色



$ 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
虽然达到要求,将不同的行归类,但是感觉代码复杂,有什么好方法吗?

[ 本帖最后由 demil 于 2008-6-3 20:05 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP