源:218.104.69.100 218.104.69.100 安徽合肥218.104.69.99 218.104.69.99 安徽合肥61.190.72.38 61.190.72.38 安徽合肥61.190.75.3 61.190.75.3 安徽合肥61.190.75.6 61.10.75.6 安徽合肥166.111.172.198 166.111.172.198 北京166.111.172.199 166.111.173.25 北京1.8.3.3 3.3.3.3 江苏南京210.28.128.0 210.28.129.255 江苏南京23.23.23.23 33.33.33.33 江苏南京3.3.3.3 2.2.2.33 江苏南京3.3.3.3 2.2.22.33 江苏南京3.3.3.3 2.33.22.33 江苏南京3.3.3.3 22.33.22.33 江苏南京我想把它变成:218.104.69.100 :218.104.69.100 :安徽合肥218.104.69.99 :218.104.69.99 :安徽合肥61.190.72.38 :61.190.72.38 :安徽合肥61.190.75.3 :61.190.75.3 :安徽合肥61.190.75.6 :61.10.75.6 :安徽合肥166.111.172.198:166.111.172.198:北京166.111.172.199:166.111.173.25 :北京1.8.3.3 :3.3.3.3 :江苏南京210.28.128.0 :210.28.129.255 :江苏南京23.23.23.23 :33.33.33.33 :江苏南京3.3.3.3 :2.2.2.33 :江苏南京3.3.3.3 :2.2.22.33 :江苏南京3.3.3.3 :2.33.22.33 :江苏南京3.3.3.3 :22.33.22.33 :江苏南京说明:1、不要管中文汉字的第三列有多少个字符串(可能很多个)2、只管前两列上面字符串最小的3.3.3.3 最大的166.111.172.198 (只是举例,明白意思就行了)3、前两列最大的字符串后面紧跟冒号,其余达不到最大字符串数量的加空格填充
我的想法是,先遍历第一列和第二列,取出两列各自字符串的最大长度,然后格式化最大长度的宽度即可。
[root]$ cat replacespace | awk -v i=0 'BEGIG{maxlen=0;maxlen2=0;i=0}{if(maxlen