免费注册 查看新帖 |

Chinaunix

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

[文本处理] 哪位awk用得比较好的朋友帮我转换个卫星节目数据表 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-07-10 21:45 |只看该作者 |倒序浏览
原始数据如下:


  1. [UPDATE]
  2. 0=Jul 6, 2013
  3. 1=1373111061
  4. 2=http://www.fastsatfinder.com
  5. 3=Eutelsat 9A, Ka-Sat 9A

  6. [SATTYPE]
  7. 1=0090
  8. 2=9.0E

  9. [DVB]
  10. 0=34
  11. 1=11727,V,27500,34,DVB-S,QPSK
  12. 2=11747,H,27500,34,DVB-S,QPSK
  13. 3=11766,V,27500,34,DVB-S,QPSK
  14. 4=11785,H,27500,23,S2,8PSK
  15. 5=11804,V,27500,34,DVB-S,QPSK
  16. 6=11823,H,27500,34,DVB-S,QPSK
  17. 7=11843,V,27500,34,DVB-S,QPSK
  18. 8=11861,H,27500,23,S2,8PSK
  19. 9=11881,V,27500,23,S2,8PSK
  20. 10=11900,H,27500,23,S2,8PSK
  21. 11=11919,V,27500,34,DVB-S,QPSK
  22. 12=11938,H,27500,34,DVB-S,QPSK
  23. 13=11958,V,27500,23,S2,8PSK
  24. 14=11977,H,27500,34,DVB-S,QPSK
  25. 15=11996,V,27500,34,DVB-S,QPSK
  26. 16=12015,H,27500,23,S2,8PSK
  27. 17=12034,V,27500,34,S2,8PSK
  28. 18=12054,H,27500,23,S2,8PSK
  29. 19=12074,V,27500,34,S2,8PSK
  30. 20=12092,H,27500,34,S2,8PSK
  31. 21=12111,V,27500,35,S2,8PSK
  32. 22=12130,H,27500,34,DVB-S,QPSK
  33. 23=12149,V,27500,23,S2,8PSK
  34. 24=12207,H,27500,34,DVB-S,QPSK
  35. 25=12226,V,27500,23,S2,8PSK
  36. 26=12245,H,27500,34,S2,8PSK
  37. 27=12265,V,27500,23,S2,8PSK
  38. 28=12284,H,27500,23,S2,8PSK
  39. 29=12322,H,27500,34,DVB-S,QPSK
  40. 30=12360,H,27500,23,S2,8PSK
  41. 31=12380,V,27500,23,S2,8PSK
  42. 32=12399,H,27500,23,S2,8PSK
  43. 33=12437,H,27500,23,S2,8PSK
  44. 34=20185,L,24995,12,S2,QPSK
复制代码
需要转换出的数据为:
  1. S1 11747000 H 27500000 3/4 AUTO QPSK
  2. S1 11785000 H 27500000 3/4 AUTO QPSK
  3. S1 11804000 V 27500000 3/4 AUTO QPSK
  4. S1 11823000 H 27500000 3/4 AUTO QPSK
  5. S1 11843000 V 27500000 3/4 AUTO QPSK
  6. S1 11919000 V 27500000 3/4 AUTO QPSK
  7. S1 11938000 H 27500000 3/4 AUTO QPSK
  8. S1 11977000 H 27500000 3/4 AUTO QPSK
  9. S1 11996000 V 27500000 3/4 AUTO QPSK
  10. S1 12054000 H 27500000 3/4 AUTO QPSK
  11. S1 12092000 H 27500000 3/4 AUTO QPSK
  12. S2 11861000 H 27500000 2/3 AUTO 8PSK
  13. S2 11958000 V 26400000 2/3 AUTO 8PSK
  14. S2 12015000 H 27500000 2/3 AUTO 8PSK
  15. S2 12034000 V 27500000 2/3 AUTO 8PSK
  16. S2 12074000 V 27500000 2/3 AUTO 8PSK
复制代码
即上面的DVB-S转成下面S开头,原含有S2的转为S2开头。其它数据一一对应。

论坛徽章:
0
2 [报告]
发表于 2013-07-10 21:59 |只看该作者
本帖最后由 哈蜜瓜 于 2013-07-10 22:01 编辑

再补充一下,每行前两个(下行频率和符号率)数字下面要多加三个零,下面每行第六列都加个AUTO,上面的34、23之类的下面用/分隔,这样的节目参数表有155个。

论坛徽章:
0
3 [报告]
发表于 2013-07-10 22:20 |只看该作者
本帖最后由 Kotokz 于 2013-07-10 22:24 编辑
  1. % awk -F "[=,]" '/PSK$/{if ($6=="DVB-S") $6="S1";split($5,d,"");print $6,$2"000",$3,$4"000",d[1]"/"d[2],"AUTO",$7}' menu.txt
  2. S1 11727000 V 27500000 3/4 AUTO QPSK
  3. S1 11747000 H 27500000 3/4 AUTO QPSK
  4. S1 11766000 V 27500000 3/4 AUTO QPSK
  5. S2 11785000 H 27500000 2/3 AUTO 8PSK
  6. S1 11804000 V 27500000 3/4 AUTO QPSK
  7. S1 11823000 H 27500000 3/4 AUTO QPSK
  8. S1 11843000 V 27500000 3/4 AUTO QPSK
  9. S2 11861000 H 27500000 2/3 AUTO 8PSK
  10. S2 11881000 V 27500000 2/3 AUTO 8PSK
  11. S2 11900000 H 27500000 2/3 AUTO 8PSK
  12. S1 11919000 V 27500000 3/4 AUTO QPSK
  13. S1 11938000 H 27500000 3/4 AUTO QPSK
  14. S2 11958000 V 27500000 2/3 AUTO 8PSK
  15. S1 11977000 H 27500000 3/4 AUTO QPSK
  16. S1 11996000 V 27500000 3/4 AUTO QPSK
  17. S2 12015000 H 27500000 2/3 AUTO 8PSK
  18. S2 12034000 V 27500000 3/4 AUTO 8PSK
  19. S2 12054000 H 27500000 2/3 AUTO 8PSK
  20. S2 12074000 V 27500000 3/4 AUTO 8PSK
  21. S2 12092000 H 27500000 3/4 AUTO 8PSK
  22. S2 12111000 V 27500000 3/5 AUTO 8PSK
  23. S1 12130000 H 27500000 3/4 AUTO QPSK
  24. S2 12149000 V 27500000 2/3 AUTO 8PSK
  25. S1 12207000 H 27500000 3/4 AUTO QPSK
  26. S2 12226000 V 27500000 2/3 AUTO 8PSK
  27. S2 12245000 H 27500000 3/4 AUTO 8PSK
  28. S2 12265000 V 27500000 2/3 AUTO 8PSK
  29. S2 12284000 H 27500000 2/3 AUTO 8PSK
  30. S1 12322000 H 27500000 3/4 AUTO QPSK
  31. S2 12360000 H 27500000 2/3 AUTO 8PSK
  32. S2 12380000 V 27500000 2/3 AUTO 8PSK
  33. S2 12399000 H 27500000 2/3 AUTO 8PSK
  34. S2 12437000 H 27500000 2/3 AUTO 8PSK
  35. S2 20185000 L 24995000 1/2 AUTO QPSK
复制代码

论坛徽章:
0
4 [报告]
发表于 2013-07-10 22:37 |只看该作者
本帖最后由 哈蜜瓜 于 2013-07-10 22:38 编辑

回复 3# Kotokz


多谢!

论坛徽章:
0
5 [报告]
发表于 2013-07-10 22:50 |只看该作者
  1. awk -F',|=' 'NR>=13{if($6=="DVB-S"){a="S1";}else{a="S2"};b=$2"000"; split($5,arr,""); split($5,arr,"");print a,b,$3,$4"000",arr[1]"/"arr[2],AUTO,$7}' URFILE
复制代码

论坛徽章:
0
6 [报告]
发表于 2013-07-11 09:42 |只看该作者
本帖最后由 哈蜜瓜 于 2013-07-11 09:44 编辑

回复 3# Kotokz
刚刚仔细研究过了,有些数据行并不含PSK字符。
回复 5# JeremyTOJ
多谢!可是前面还有多余的行。
还有这种数据表,该如何转换?多谢:
  1. {SYS_DVBS ,11727, POLARIZATION_VERTICAL  ,27500, FEC_3_4,  ROLLOFF_35, QPSK},
  2. {SYS_DVBS ,11747, POLARIZATION_HORIZONTAL,27500, FEC_3_4,  ROLLOFF_35, QPSK},
  3. {SYS_DVBS ,11766, POLARIZATION_VERTICAL  ,27500, FEC_5_6,  ROLLOFF_35, QPSK},
  4. {SYS_DVBS2,11785, POLARIZATION_HORIZONTAL,27500, FEC_2_3,  ROLLOFF_35,PSK_8},
  5. {SYS_DVBS ,11804, POLARIZATION_VERTICAL  ,27500, FEC_3_4,  ROLLOFF_35, QPSK},
  6. {SYS_DVBS ,11823, POLARIZATION_HORIZONTAL,27500, FEC_3_4,  ROLLOFF_35, QPSK},
  7. {SYS_DVBS ,11843, POLARIZATION_VERTICAL  ,27500, FEC_3_4,  ROLLOFF_35, QPSK},
  8. {SYS_DVBS2,11861, POLARIZATION_HORIZONTAL,27500, FEC_2_3,  ROLLOFF_35,PSK_8},
  9. {SYS_DVBS ,11881, POLARIZATION_VERTICAL  ,27500, FEC_5_6,  ROLLOFF_35, QPSK},
  10. {SYS_DVBS ,11919, POLARIZATION_VERTICAL  ,27500, FEC_5_6,  ROLLOFF_35, QPSK},
  11. {SYS_DVBS ,11938, POLARIZATION_HORIZONTAL,27500, FEC_3_4,  ROLLOFF_35, QPSK},
  12. {SYS_DVBS ,11958, POLARIZATION_VERTICAL  ,27500, FEC_3_4,  ROLLOFF_35, QPSK},
  13. {SYS_DVBS ,11977, POLARIZATION_HORIZONTAL,27500, FEC_3_4,  ROLLOFF_35, QPSK},
  14. {SYS_DVBS2,12015, POLARIZATION_HORIZONTAL,27500, FEC_2_3,  ROLLOFF_35,PSK_8},
  15. {SYS_DVBS2,12034, POLARIZATION_HORIZONTAL,27500, FEC_2_3,  ROLLOFF_35,PSK_8},
  16. {SYS_DVBS ,12054, POLARIZATION_HORIZONTAL,27500, FEC_3_4,  ROLLOFF_35, QPSK},
  17. {SYS_DVBS2,12074, POLARIZATION_VERTICAL  ,27500, FEC_2_3,  ROLLOFF_35,PSK_8},
  18. {SYS_DVBS ,12092, POLARIZATION_HORIZONTAL,27500, FEC_3_4,  ROLLOFF_35, QPSK},
  19. {SYS_DVBS ,12130, POLARIZATION_HORIZONTAL,27500, FEC_3_4,  ROLLOFF_35, QPSK},
  20. {SYS_DVBS2,12283, POLARIZATION_HORIZONTAL,27500, FEC_2_3,  ROLLOFF_35,PSK_8},
  21. {SYS_DVBS ,12322, POLARIZATION_HORIZONTAL,27500, FEC_3_4,  ROLLOFF_35, QPSK},
  22. {SYS_DVBS ,12360, POLARIZATION_HORIZONTAL,27500, FEC_3_4,  ROLLOFF_35, QPSK},
  23. {SYS_DVBS ,12398, POLARIZATION_HORIZONTAL,27500, FEC_3_4,  ROLLOFF_35, QPSK},
复制代码

论坛徽章:
0
7 [报告]
发表于 2013-07-11 13:05 |只看该作者
sorry,我知道怎么弄了

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
8 [报告]
发表于 2013-07-11 13:18 |只看该作者
回复 6# 哈蜜瓜


   如果不含PSK行,那就给出不含的例子。

如果有新的要求,请另起一个新帖。

论坛徽章:
0
9 [报告]
发表于 2013-07-11 13:39 |只看该作者
回复 8# rdcwayx


    我明白该怎么做了,是我犯了只顾结果不重过程的大忌。多谢各位了!

论坛徽章:
0
10 [报告]
发表于 2013-07-11 15:41 |只看该作者
  1. cat 3550.ini | awk -F',|=' 'NR>=14{if ($3=="V") $3="POLARIZATION_VERTICAL"",";if ($3=="H") $3="POLARIZATION_HORIZONTAL"",";if ($3=="R") $3="POLARIZATION_CIRCULAR_RIGHT"",";if ($3=="L") $3="POLARIZATION_CIRCULAR_LEFT"",";split($5,arr,""); split($5,arr,"");print "{"$6",",$2",",$3,$4",","FEC_"arr[1]"_"arr[2]",","ROLLOFF_35"",",$7}' | sed -e 's/8PSK/PSK_8/g' -e 's/DVB-S/SYS_DVBS/g' -e 's/S2/SYS_DVBS2/g' -e 's/^M/}/'
复制代码
弄来弄去最后的"}"居然给弄到行前了,原来还存在dos换车符。虽然这个实现的过程很傻,目的还是达到了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP