- 論壇徽章:
- 0
|
有單位代碼及排列順序如下:
- A001
- A002
- A021
- A022
- A023
- A025
- A027
- A029
- A031
- A093
- A094
- A095
復(fù)制代碼 這樣的順序重復(fù)6次
現(xiàn)從數(shù)據(jù)庫提取數(shù)據(jù)時(shí),如果某單位無數(shù)據(jù)時(shí)就會(huì)缺行,如下:
- # 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
復(fù)制代碼 以下數(shù)據(jù)重復(fù)6次,但缺失的單位不盡相同;
現(xiàn)要求用shell補(bǔ)齊所有單位,并為缺失的單位輸出“單位代碼 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
復(fù)制代碼 本人的代碼如下:
- 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
復(fù)制代碼 但如果有兩個(gè)或兩個(gè)以上連續(xù)的單位缺失時(shí),結(jié)果就不對(duì)了,希望大家?guī)兔Γ?br />
謝謝 |
|