2014-10-12 66 views
1

我有數據格式CSV文件,如以下:多個值文件

201212998474|201212998474|99|20140911092720|1410427640|Sy-module-1.PTS-DR1.mobinil.net;1410427618;0;10.56.201.79|2001|||0|||||mobinildpi|SOCIAL|||0|DIAMETER_LOGOUT||0,0,0,5634026,|201212998474NonRoaming,201212998474_2190_MONTHLY_1GB_20LE,201212998474_7702_Unlimited_CAP,201212998474_7702_POST_FUP_USAGE,|10||T|1||||| 
201212998474|201212998474|99|20140911092720|1410427640|Sy-module-1.PTS-DR1.mobinil.net;1410427618;0;10.56.201.79|2001|||0|||||mobinildpi|EMAIL|||0|DIAMETER_LOGOUT||0,0,0,5634026,|201212998474NonRoaming,201212998474_2190_MONTHLY_1GB_20LE,201212998474_7702_Unlimited_CAP,201212998474_7702_POST_FUP_USAGE,|10||T|1||||| 
201212998474|201212998474|99|20140911092720|1410427640|Sy-module-1.PTS-DR1.mobinil.net;1410427618;0;10.56.201.79|2001|||0|||||mobinildpi|STREAMING|||0|DIAMETER_LOGOUT||0,0,0,5634026,|201212998474NonRoaming,201212998474_2190_MONTHLY_1GB_20LE,201212998474_7702_Unlimited_CAP,201212998474_7702_POST_FUP_USAGE,|10||T|1||||| 
201212998474|201212998474|99|20140911092720|1410427640|Sy-module-1.PTS-DR1.mobinil.net;1410427618;0;10.56.201.79|2001|||0|||||mobinildpi|WEB|||10180|DIAMETER_LOGOUT||0,0,0,5634026,|201212998474NonRoaming,201212998474_2190_MONTHLY_1GB_20LE,201212998474_7702_Unlimited_CAP,201212998474_7702_POST_FUP_USAGE,|10||T|1||||| 
201212998474|201212998474|99|20140911092720|1410427640|Sy-module-1.PTS-DR1.mobinil.net;1410427618;0;10.56.201.79|2001|||0|||||mobinildpi|IM_AND_VOIP|||0|DIAMETER_LOGOUT||0,0,0,5634026,|201212998474NonRoaming,201212998474_2190_MONTHLY_1GB_20LE,201212998474_7702_Unlimited_CAP,201212998474_7702_POST_FUP_USAGE,|10||T|1||||| 
201212998474|201212998474|99|20140911092720|1410427640|Sy-module-1.PTS-DR1.mobinil.net;1410427618;0;10.56.201.79|2001|||0|||||mobinildpi|DEFAULT|||0|DIAMETER_LOGOUT||0,0,0,5634026,|201212998474NonRoaming,201212998474_2190_MONTHLY_1GB_20LE,201212998474_7702_Unlimited_CAP,201212998474_7702_POST_FUP_USAGE,|10||T|1||||| 
201212998474|201212998474|99|20140911092720|1410427640|Sy-module-1.PTS-DR1.mobinil.net;1410427618;0;10.56.201.79|2001|||0|||||mobinildpi|TUNNELING|||0|DIAMETER_LOGOUT||0,0,0,5634026,|201212998474NonRoaming,201212998474_2190_MONTHLY_1GB_20LE,201212998474_7702_Unlimited_CAP,201212998474_7702_POST_FUP_USAGE,|10||T|1||||| 
201212998474|201212998474|99|20140911092720|1410427640|Sy-module-1.PTS-DR1.mobinil.net;1410427618;0;10.56.201.79|2001|||0|||||mobinildpi|FREETRAFFIC|||0|DIAMETER_LOGOUT||0,0,0,5634026,|201212998474NonRoaming,201212998474_2190_MONTHLY_1GB_20LE,201212998474_7702_Unlimited_CAP,201212998474_7702_POST_FUP_USAGE,|10||T|1||||| 
201212998474|201212998474|99|20140911092720|1410427640|Sy-module-1.PTS-DR1.mobinil.net;1410427618;0;10.56.201.79|2001|||0|||||mobinildpi|ALWAYS_ON|||0|DIAMETER_LOGOUT||0,0,0,5634026,|201212998474NonRoaming,201212998474_2190_MONTHLY_1GB_20LE,201212998474_7702_Unlimited_CAP,201212998474_7702_POST_FUP_USAGE,|10||T|1||||| 

我需要在第22列中提取4個值中的每個,並獲得第一讀數和之間的差最後閱讀他們每個人的列。 我試圖驗證碼:

awk -F "|" '{ 
if (length(msisdn[$1] == 0)) { 
          msisdn[$1] = $6 ; 
          counter[$1] = $22 ; } 
last[$1] = $22 ; 
type[$1] = $23 ; 
           } END { for (i in msisdn) { print i " : " msisdn[i] " : " type[i] " : " (counter [i]-last[i]) ; }}' 201409* > counters.txt 

,但它給了我希望的出來僅列第一個值。 預期的輸出應該是這樣的:

201274971010 : Sy-ptsd-3.module-3.PTS1-DRC.mobinil.net;1410748407;0;10.215.43.213 : 201274971010NonRoaming,201274971010_2190_MONTHLY_1GB_20LE, : 0 , 320 
201202999478 : Sy-ptsd-3.module-8.PTS3-DRC.mobinil.net;1410753394;0;10.141.241.65 : 201202999478NonRoaming,201202999478_2190_MONTHLY_1GB_20LE, : 0 , 150 
+1

這是不是很清楚你要在這裏做什麼。你可以嘗試更清楚地解釋嗎?列如何分組? 6美元和23美元的意義何在?也許你可以減少問題中的列數,因爲它們中的許多與問題無關。 – 2014-10-12 12:16:20

回答

0

短(!最短)的答案是

awk -F\| '{ 
       # split(source, destination, separator_re) 
       split($22, values, /,/); 
       print values[4]-values[1]; 
      }' 

我認爲,你可以安排的輸出文件規定中其餘的(我能」 t理解)

+0

ps:參見@Tom Fenech的上述評論,它解釋了我的問題,試圖瞭解您的要求... – gboffi 2014-10-12 12:32:19

+0

感謝您的回答,如果我在我的解釋中不夠清楚,那麼這很有幫助 – 2014-10-12 12:46:38

+0

親愛的穆罕默德,您的問題解釋是,你的問題是一個複雜的問題,你已經自己解決了98%,並且你在問題中留下了所有的複雜因素。如果你付出努力(我明白這是一種努力),放棄所有的複雜情況並提出一個更簡單的問題,它就更有可能得到有用的答案! – gboffi 2014-10-12 18:41:09