- 论坛徽章:
- 0
|
本帖最后由 keke00 于 2010-05-09 11:11 编辑
上次已经问过类似的问题,无奈基础太差,再次麻烦大家{:3_183:} ,非常感谢
文件123.txt,共四行(因每一行较长故标注下),内容如下
第一行:123 aaa 55.52 53.56 54.57 58.59 60.01 56.54 57.51 58.02 59.01 60.02 aa0101e ab0001 ac0005i ad0004 ddd ae0004a
第二行:456 aaa 53.54 56.52 57.52 58.52 59.01 12.13 13.14 14.15 15.16 16.17 ba0011f bb0002 bc0004j bd0004 ffffff be0003a
第三行:789 aaa 56.54 57.51 58.02 59.01 60.02 55.52 53.56 54.57 58.59 60.01 da0101g db0003 dc0003k dd0004 qqq de0002e
第四行:abc bbb 12.13 13.14 14.15 15.16 16.17 56.54 57.51 58.02 59.01 60.02 ab1001h db0002 gc0008h wd0004 eee ce0005b
要求:1. awk处理,OFS=,只打印匹配/aaa/的行
2.打印第1域后,第3~12域每一个域只打印后4个字符(用循环实现),然后打印13、15、18域每一域的后5个字符
效果:
123,5.52,3.56,4.57,8.59,0.01,6.54,7.51,8.02,9.01,0.02,0101e,0005j,0004a
456,3.54,6.52,7.52,8.52,9.01,2.13,3.14,4.15,5.16,6.17,0011f,0004j,0003a
789,6.54,7.51,8.02,9.01,0.02,5.52,3.56,4.57,8.59,0.01,1001h,0008h,0002e
请帮小弟看下以下代码错zai哪里?并渴望犀利脚本
因为substr($15,3,5),substr($18,3,5)没起作用- awk '/aaa/{printf $1;for(i=3;i<=12;i++){printf ","substr($i,2,4)};printf"," substr($13,3,5),substr($15,3,5),substr($18,3,5);printf "\n"}' 123.txt
复制代码 |
|