免费注册 查看新帖 |

Chinaunix

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

[文本处理] 用sed或awk如何实现 [复制链接]

论坛徽章:
28
2015年迎新春徽章
日期:2015-03-04 10:16:53午马
日期:2015-03-20 17:11:07亥猪
日期:2015-03-20 17:11:23戌狗
日期:2015-03-20 17:11:33酉鸡
日期:2015-03-20 17:11:47申猴
日期:2015-03-20 17:11:58未羊
日期:2015-03-20 17:12:10子鼠
日期:2015-03-20 17:12:23丑牛
日期:2015-03-20 17:12:40卯兔
日期:2015-03-20 17:12:51辰龙
日期:2015-03-20 17:13:00巳蛇
日期:2015-03-20 17:13:12
11 [报告]
发表于 2015-04-14 16:43 |只看该作者
回复 10# xiaoshichao143


    你们都不贴原文本....贴出来的部分也不具有代表性....字符处理这么精确的事情当然结果会有偏差...

论坛徽章:
9
寅虎
日期:2013-12-02 12:49:22巨蟹座
日期:2014-07-18 18:13:34卯兔
日期:2014-07-25 14:43:08子鼠
日期:2014-07-26 10:10:51酉鸡
日期:2014-07-31 15:09:562015亚冠之本尤德科
日期:2015-05-19 09:27:382015亚冠之卡尔希纳萨夫
日期:2015-06-20 10:30:212015亚冠之阿尔纳斯尔
日期:2015-07-01 20:46:062015亚冠之城南
日期:2015-07-15 21:12:00
12 [报告]
发表于 2015-04-14 17:10 |只看该作者
  1. test@ubuntu-test:~/test$ cat test.txt
  2. ------------------------------------------------
  3. sLanguage|sServiceID|nSPID|nServiceCode|sMemo|sLangTypeAbbr|sUsed|nSMSCodeSchema|sNBLangID
  4. ------------------------------------------------
  5. 142|-1|-1|1|Chinese|cn|1|1|01
  6. 01|-1|-1|1|Memo|CN|1|2|2
  7. 02|-1|-1|1|Memo|CN|1|2|2
  8. 143|-1|-1|1|Language type memo|chi|1|1|06
  9. 144|-1|-1|1|Language type memo|eng|1|1|06
  10. 145|-1|-1|1|Language type memo|spa|1|1|06
  11. test@ubuntu-test:~/test$ awk -F"|" '!/^-*$/{if(a){print a,$1;next}{a=$1}}' test.txt
  12. sLanguage 142
  13. sLanguage 01
  14. sLanguage 02
  15. sLanguage 143
  16. sLanguage 144
  17. sLanguage 145
复制代码

论坛徽章:
6
羊年新春福章
日期:2015-03-03 17:16:28双子座
日期:2015-03-03 17:16:56巳蛇
日期:2015-03-03 17:17:2415-16赛季CBA联赛之福建
日期:2016-03-11 09:05:00黑曼巴
日期:2016-07-07 16:58:1215-16赛季CBA联赛之吉林
日期:2016-11-14 09:23:07
13 [报告]
发表于 2015-04-18 17:38 |只看该作者
本帖最后由 jcdiy0601 于 2015-04-18 17:39 编辑
  1. awk -F"|" '{if($1~/sLanguage/) name=$1;if($1~/[0-9]/)print name,$1}' 1
复制代码

论坛徽章:
10
天蝎座
日期:2013-09-22 22:32:23程序设计版块每日发帖之星
日期:2016-08-07 06:20:00lufei
日期:2016-06-17 17:38:40程序设计版块每日发帖之星
日期:2016-06-12 06:20:002016科比退役纪念章
日期:2016-05-31 15:47:20CU十四周年纪念徽章
日期:2016-05-27 12:24:562015年亚洲杯之阿曼
日期:2015-05-03 21:01:352015年辞旧岁徽章
日期:2015-03-03 16:54:15天蝎座
日期:2013-10-20 21:05:24程序设计版块每日发帖之星
日期:2016-08-11 06:20:00
14 [报告]
发表于 2015-04-18 19:04 |只看该作者
  1. lee@lee-HP-ProBook-4416s:~$ echo '------------------------------------------------
  2. sLanguage|sServiceID|nSPID|nServiceCode|sMemo|sLangTypeAbbr|sUsed|nSMSCodeSchema|sNBLangID
  3. ------------------------------------------------
  4. 142|-1|-1|1|Chinese|cn|1|1|01
  5. 01|-1|-1|1|Memo|CN|1|2|2
  6. 02|-1|-1|1|Memo|CN|1|2|2
  7. 143|-1|-1|1|Language type memo|chi|1|1|06
  8. 144|-1|-1|1|Language type memo|eng|1|1|06
  9. 145|-1|-1|1|Language type memo|spa|1|1|06' | awk -F '\|' '/sLanguage/{for(i=0; i<NF;i++)if($i=="sLanguage")col=i;next}NF>1{print "sLanguage " $col}'
  10. sLanguage 142
  11. sLanguage 01
  12. sLanguage 02
  13. sLanguage 143
  14. sLanguage 144
  15. sLanguage 145
复制代码
回复 1# xiaoshichao143


   

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 10:16:53
15 [报告]
发表于 2015-04-19 21:16 |只看该作者
awk 'BEGIN{FS="|";NR=4}{print "sLanguage   " $1}' a.txt

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-02-25 06:20:00
16 [报告]
发表于 2015-04-27 11:26 |只看该作者
回复 15# sky_eminem


    这个不通用,只适用于当前表。

论坛徽章:
0
17 [报告]
发表于 2015-05-08 11:12 |只看该作者
  1. sed -r '/[a-z]/!d;s!([^|]+).*!\1!;/[a-z]/{h;d};G;s!(.*)\n(.*)!\2: \1!' file
复制代码

论坛徽章:
5
白羊座
日期:2014-10-28 11:23:27水瓶座
日期:2015-01-20 10:19:022015亚冠之柏斯波利斯
日期:2015-07-11 18:17:2015-16赛季CBA联赛之同曦
日期:2015-12-23 12:38:582016猴年福章徽章
日期:2016-02-18 15:30:34
18 [报告]
发表于 2015-05-08 13:49 |只看该作者
  1. sed -rn 's/\|.*$//;ta;d;:a;/^[0-9]/{G;s/(.*)\n(.*)/\2 \1/;p;d};h' urfile
复制代码

论坛徽章:
8
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015小元宵徽章
日期:2015-03-06 15:58:18每日论坛发贴之星
日期:2015-06-08 22:20:00每日论坛发贴之星
日期:2015-06-08 22:20:00操作系统版块每日发帖之星
日期:2015-06-14 22:20:00数据库技术版块每日发帖之星
日期:2015-11-09 06:20:00数据库技术版块每日发帖之星
日期:2016-02-22 06:20:0015-16赛季CBA联赛之上海
日期:2017-01-01 23:58:53
19 [报告]
发表于 2015-05-10 19:34 |只看该作者
其他人解决方式我就没看了先写上我的

  1. #!/bin/bash
  2. a=`awk -F '|' '{print $1}' file | tail -6 > 1.txt`
  3. for i in `cat 1.txt`
  4. do
  5. echo "sLanguage"  $i
  6. done
  7. rm -rf 1.txt
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP