- 论坛徽章:
- 0
|
有单位代码及排列顺序如下:
- A001
- A002
- A021
- A022
- A023
- A025
- A027
- A029
- A031
- A093
- A094
- A095
复制代码 这样的顺序重复6次
现从数据库提取数据时,如果某单位无数据时就会缺行,如下:
- # cat datas
- A001 9725.11 A
- A021 8856.12 M
- A023 9925.17 P
- A025 0012.45 O
- A031 1010.11 K
- A093 2001.59 L
- A095 4500.09 Y
复制代码 以下数据重复6次,但缺失的单位不尽相同;
现要求用shell补齐所有单位,并为缺失的单位输出“单位代码 0 Q”,并且单位顺序不可混乱:
- A001 9725.11 A
- A002 0 Q
- A021 8856.12 M
- A022 0 Q
- A023 9925.17 P
- A025 0012.45 O
- A027 0 Q
- A029 0 Q
- A031 1010.11 K
- A093 2001.59 L
- A094 0 Q
- A095 4500.09 Y
复制代码 本人的代码如下:
- awk 'BEGIN{split("A001 A002 A021 A022 A023 A025 A027 A029 A031 A093 A094 A095",C," ");i=1}
- {
- if($1==C[i]){printf("%s %s %s\n",$1,$2,$3)}else{printf("%s 0 Q\n",C[i++])};
- i++;
- if(i==13){i=1};
- }' datas
复制代码 但如果有两个或两个以上连续的单位缺失时,结果就不对了,希望大家帮忙!
谢谢 |
|