- 論壇徽章:
- 1
|
本帖最后由 ace_fei 于 2014-02-12 11:38 編輯
原始文本
3076931 3076733 AA
3076738 3076739 BB
3076130 3076131 CC
3071127 3071127 CC
需要得到文本
3076931 3076731 AA
3076732 3076732 AA
3076933 3076733 AA
3076738 3076738 BB
3076739 3076739 BB
3076130 3076130 CC
3076131 3076131 CC
3071127 3071127 CC
我現(xiàn)在用awk來處理,可以得到結(jié)果。
$awk '{a=substr($1,7,1);b=substr($2,7,1);for(c=a;c-b<=0;c++){x=substr($1,1,6)c;y=substr($2,1,6)c;print x,y,$3}}' 1.txt
3076931 3076731 AA
3076932 3076732 AA
3076933 3076733 AA
3076738 3076738 BB
3076739 3076739 BB
3076130 3076130 CC
3076131 3076131 CC
3071127 3071127 CC
但是我發(fā)現(xiàn)我要是把for循環(huán)中的 c-b<=0,改為c<=b,結(jié)果就不同了,請問大家知道是什么原因嗎?
$awk '{a=substr($1,7,1);b=substr($2,7,1);for(c=a;c<=b;c++){x=substr($1,1,6)c;y=substr($2,1,6)c;print x,y,$3}}' 1.txt
3076931 3076731 AA
3076932 3076732 AA
3076933 3076733 AA
3076738 3076738 BB
3076739 3076739 BB
30767310 30767310 BB
30767311 30767311 BB
... ...
30767389 30767389 BB
3076130 3076130 CC
3076131 3076131 CC
3071127 3071127 CC
如果是比較ascii碼,為什么就BB那行數(shù)據(jù)有異常,是'8'跟'9'對應(yīng)的ascii碼做比較嗎?
進(jìn)展:
我修改了一下原始文本BB那列的數(shù)據(jù),發(fā)現(xiàn)只有當(dāng)末位數(shù)是9的時候(即b=9),才會出異常,判斷c<=b時,會自動變成c<=90。 |
|