awk 里面的数组练习

练习1

题目

[root@iZ2ze3nk0eea4xli1fijrvZ awk]# cat file4
811009123456 185451 40.WT_VERIFY_TX_ALL 2442(7) HT40-MCS7 CHAIN0
-31.67 dB (-45.00 .............O.... -28.00)
14.77 dBm ( 13.50 .......O.......... 16.50)
-1.17 ppm (-20.00 ........O......... 20.00)
811009123453 185451 41.WT_VERIFY_TX_ALL 2442(7) HT40-MCS7 CHAIN1
-32.72 dB (-45.00 ............O..... -28.00)
14.59 dBm ( 13.50 ......O........... 16.50)
-1.03 ppm (-20.00 ........O......... 20.00)
811009123455 185451 51.WT_VERIFY_TX_ALL 5200(40) AC20-MCS7 CHAIN0
-37.65 dB (-45.00 .......O.......... -28.00)
15.68 dBm ( 14.00 .........O........ 17.00)
-1.47 ppm (-20.00 .......O.......... 20.00)
811009123459 185451 52.WT_VERIFY_TX_ALL 5280(56) AC20-MCS7 CHAIN0
-40.38 dB (-45.00 ....O............. -28.00)
15.68 dBm ( 14.00 .........O........ 17.00)
-1.60 ppm (-20.00 .......O.......... 20.00)

 

期望结果

811009123456 185451 40.WT_VERIFY_TX_ALL 2442(7) HT40-MCS7 CHAIN0-31.67 dB (-45.00 .............O.... -28.00)14.77 dBm ( 13.50 .......O.......... 16.50)-1.17 ppm (-20.00 ........O......... 20.00)
811009123453 185451 41.WT_VERIFY_TX_ALL 2442(7) HT40-MCS7 CHAIN1-32.72 dB (-45.00 ............O..... -28.00)14.59 dBm ( 13.50 ......O........... 16.50)-1.03 ppm (-20.00 ........O......... 20.00)
811009123455 185451 51.WT_VERIFY_TX_ALL 5200(40) AC20-MCS7 CHAIN0-37.65 dB (-45.00 .......O.......... -28.00)15.68 dBm ( 14.00 .........O........ 17.00)-1.47 ppm (-20.00 .......O.......... 20.00)
811009123459 185451 52.WT_VERIFY_TX_ALL 5280(56) AC20-MCS7 CHAIN0-40.38 dB (-45.00 ....O............. -28.00)15.68 dBm ( 14.00 .........O........ 17.00)-1.60 ppm (-20.00 .......O.......... 20.00)

 

解法1

 cat file4 | awk '/^811/{print a;a=$0;next}{a=a""$0}END{print a}'

思路:遍历整个文本,以811开头的存一个变量,不是以811开头的以“ ”空格为拼接符,拼接在以811开头的行后面

分析:awk 就是一行一行读取文件,读取第一行,pattern 是以811开头的,执行后面的action,{print a;a=$0;next},print a ,由于读取第一行a 的值为空,见如下分析,第二个打印空行是因为分号的原因,如果a 没有值,则a应该答应空白。

[root@iZ2ze3nk0eea4xli1fijrvZ awk]# cat file4 | awk '/^811/{print a"===="}'
====
====
====
====
[root@iZ2ze3nk0eea4xli1fijrvZ awk]# cat file4 | awk '/^811/{print a;print "===="}'

====

====

====

====

 

posted @ 2018-12-25 21:11  zcmdxj  阅读(219)  评论(0编辑  收藏  举报