awk处理案例十一--处理“地学”应用中的一个问题
【场景】
有一文件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.

浙公网安备 33010602011771号