【场景】
有一文件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.