awk处理案例十一--处理“地学”应用中的一个问题

时间:2021-03-30 05:20:15

【场景】

有一文件aa如下:
       650571.37     2188705.56              1.
       654437.44     2187283.55              1.
       653184.30     2187230.23              1.
       652925.37     2187289.22              1.
       650571.37     2188705.56              1.
       649691.51     2186999.15              1.
       652171.12     2186759.19              1.
       651886.72     2186794.74              1.
       651415.69     2186785.85              1.
       651086.85     2186812.51              1.
       650589.15     2186919.17              1.
       649691.51     2186999.15              1.
       637433.66     2186183.54              1.
       637890.88     2186243.18              1.
       636877.04     2186094.09              1.
       637433.66     2186183.54              1.
       645330.86     2190220.43              1.
       645920.33     2190210.21              1.
       644197.83     2190239.87              1.
       644734.38     2190242.31              1.
       645330.86     2190220.43              1.

现在我想用awk将其变成文件 bb 如下:
       650571.37     2188705.56              1.
       654437.44     2187283.55              1.
       653184.30     2187230.23              1.
       652925.37     2187289.22              1.
       650571.37     2188705.56              1.
       649691.51     2186999.15              2.
       652171.12     2186759.19              2.
       651886.72     2186794.74              2.
       651415.69     2186785.85              2.
       651086.85     2186812.51              2.
       650589.15     2186919.17              2.
       649691.51     2186999.15              2.
       637433.66     2186183.54              3.
       637890.88     2186243.18              3.
       636877.04     2186094.09              3.
       637433.66     2186183.54              3.
       645330.86     2190220.43              4.
       645920.33     2190210.21              4.
       644197.83     2190239.87              4.
       644734.38     2190242.31              4.
       645330.86     2190220.43              4.

 【处理规律】:这数据有个规律,既每段数据首尾两组数是相同的

 【代码】

awk 'BEGIN{count=1}{if(!a[$1$2]++){print $1,$2,count"."}else{print $1,$2,count".";count++}}'

【解析】
  重点还是数组a;第一次出现;count没做什么操作;当第二次出现时;count++;

【测试如下】

[li0924@localhost awk]$ awk 'BEGIN{count=1}{if(!a[$1$2]++){print $1,$2,count"."}else{print $1,$2,count".";count++}}' aa
650571.37 2188705.56 1.
654437.44 2187283.55 1.
653184.30 2187230.23 1.
652925.37 2187289.22 1.
650571.37 2188705.56 1.
649691.51 2186999.15 2.
652171.12 2186759.19 2.
651886.72 2186794.74 2.
651415.69 2186785.85 2.
651086.85 2186812.51 2.
650589.15 2186919.17 2.
649691.51 2186999.15 2.
637433.66 2186183.54 3.
637890.88 2186243.18 3.
636877.04 2186094.09 3.
637433.66 2186183.54 3.
645330.86 2190220.43 4.
645920.33 2190210.21 4.
644197.83 2190239.87 4.
644734.38 2190242.31 4.
645330.86 2190220.43 4.