- 論壇徽章:
- 0
|
問題發(fā)生環(huán)境:
我們的操作維護(hù)系統(tǒng)升級后,原始數(shù)據(jù)發(fā)生變化,但是對應(yīng)的工具已經(jīng)沒有開發(fā)團(tuán)隊繼續(xù)開發(fā)和支持了,而老的工具無法正常導(dǎo)入新的系統(tǒng)配置數(shù)據(jù)!
根據(jù)錯誤提示確定問題發(fā)生的對應(yīng)的源文件,對此文件200多個字段分析后發(fā)現(xiàn),是由于此文件中有5個字段的值的類型由升級前的整數(shù)變?yōu)樯壓蟮母↑c型,導(dǎo)入工具導(dǎo)入這五個字段的時候提示出錯,而不能正常導(dǎo)入,而這個文件恰恰是其中最關(guān)鍵的文件,不能缺少,對這幾個字段分析發(fā)現(xiàn),其中的值全為0.00,而且目前網(wǎng)絡(luò)對此具體值并不敏感,可以直接替換為整數(shù)0,本人就在網(wǎng)上搜索相關(guān)主題,最后發(fā)現(xiàn)可以直接使用awk對這幾個字段進(jìn)行替換.
解決方法如下:
在原始處理數(shù)據(jù)的shell中增加如下兩句
mv BTS.txt BTSorg.txt
$Rep_Tools/gawk -F';' '{OFS=";"}{$165="0";$166="0";$167="0";$168="0";$205="0";print}' BTSorg.txt > BTS.txt
說明:
1.我們的源文件名為BTS.TXT,首先將源文件通過mv命令改名BTSorg.txt.作為處理時的輸入文件,也作為原數(shù)據(jù)予以保留
2.通過第二行的指令對更名后源文件BTSorg.txt中第165,166,167,168,205字段直接替換為0,并使用print輸出更新后的整行內(nèi)容到BTS.txt
處理前后的文件見附件!
處理前的文本文件內(nèi)容:
BTSorg.zip
(32.47 KB, 下載次數(shù): 28)
2008-12-30 20:20 上傳
點擊文件名下載附件
處理之前的文本文件
處理后的文本文件內(nèi)容:
BTS.zip
(32.33 KB, 下載次數(shù): 21)
2008-12-30 20:20 上傳
點擊文件名下載附件
通過這兩行處理后的文本文件
此問題解決了數(shù)據(jù)不能正常導(dǎo)入的問題,但并非最完美的解決方案,還存在以下問題:
1.因為這個源文件首行是標(biāo)題行,此命令將標(biāo)題行對應(yīng)列的標(biāo)題也改為了0
2.假如這些列的數(shù)據(jù)非0,如是8.00,此命令改變了原始值
為了真正掌握相關(guān)awk知識,尋求盡可能完美的解決方法,在此將此問題提出,歡迎壇友能給出更好的建議
1.解決在替換時不替換標(biāo)題行,也就是第一行對應(yīng)列的內(nèi)容
2.將這些列不直接賦0,而是將原值轉(zhuǎn)換為整型數(shù)付給對應(yīng)列,盡可能把對原始數(shù)據(jù)的影響降到最低!
[ 本帖最后由 metaxing 于 2008-12-30 20:20 編輯 ] |
|