das ist meine Dateieine Spalte zu csv Hinzufügen und + awk tun Division
$ cat test1
"Rec_Open_Date","MSISDN","IMEI","Data_Volume_Bytes","Device_Manufacturer","Device_Model","Product_Description"
"2015-10-06","427","060","137765","Samsung Korea","Samsung SM-G900I","$39 Plan"
"2015-10-06","592","620","0","Apple Inc","Apple iPhone 6 (A1586)","PREPAY STD - TRIAL - #16"
"2015-10-06","007","290","0","Apple Inc","Apple iPhone 6 (A1586)","PREPAY PLUS - $0 -"
"2015-10-06","592","050","48836832","Apple Inc","Apple iPhone 5S (A1530)","Talk and Text Connect Flexi Plan"
"2015-10-06","409","720","113755347","Samsung Korea","Samsung SM-G360G","$29 CARRYOVER PLAN"
"2015-10-06","742","620","19840943","Apple Inc","Apple iPhone S (A1530)","PREPAY STD - $0 - #2"
"2015-10-06","387","180","0","HUAWEI Technologies Co Ltd","HUAWEI HUAWEI G526-L11","PREPAY STD - $1 - #4"
"2015-10-06","731","570","2258243","Samsung Korea","Samsung SM-N910U","Business Freedom"
"2015-10-06","556","910","13332272","Samsung Korea","Samsung GT-I9505","$49 Plan"
dieser Befehl an das Ende einer Spalte hinzufügt.
$ awk -F"," 'BEGIN { OFS = "," } {$7=($4); print}' test1
"Rec_Open_Date","MSISDN","IMEI","Data_Volume_Bytes","Device_Manufacturer","Device_Model","Data_Volume_Bytes"
"2015-10-06","427","060","137765","Samsung Korea","Samsung SM-G900I","137765"
"2015-10-06","592","620","0","Apple Inc","Apple iPhone 6 (A1586)","0"
wie bekomme ich die folgende Ausgabe: Der Einfachheit halber dies nur $7=($4/1)
ist.
"Rec_Open_Date","MSISDN","IMEI","Data_Volume_Bytes","Device_Manufacturer","Device_Model","Data_Volume_Bytes"
"2015-10-06","427","060","137765","Samsung Korea","Samsung SM-G900I","137765"
"2015-10-06","592","620","0","Apple Inc","Apple iPhone 6 (A1586)","0"
Was wirklich tun möchte, der Lage sein, ich ist $7=$4/10124/1024
aber aus irgendeinem Grund kann ich nicht die Division an die Arbeit.
Ich habe das versucht, aber ich bekomme nur $ 7 = gleich Null.
awk -F"," 'BEGIN { OFS = "," } {$7=($4/1024); print}' test1
"Rec_Open_Date","MSISDN","IMEI","Data_Volume_Bytes","Device_Manufacturer","Device_Model",0
"2015-10-06","427","060","137765","Samsung Korea","Samsung SM-G900I",0
EDIT1: Thsi ist, wie ich den Namen des Spalts Kopfes in Spalte 7. Nicht sicher ändern, wenn \"
ist die beste oder einzige Möglichkeit, es in doppelten Anführungszeichen zu halten.
$ awk -F"," '{ OFS = "," } NR<=1{$7="\"Data_Volume_MB\""; print}' test1
"Rec_Open_Date","MSISDN","IMEI","Data_Volume_Bytes","Device_Manufacturer","Device_Model","Data_Volume_MB"
EDIT2 DIES IST, was ich will, aber es geht casting from a string to an int in awksubstr($4,2,(length($4)-2))
. aber die Antwort ist nicht in Anführungszeichen 0.131383
, für Einheitlichkeit wie erreiche ich das?
$ awk -F"," '{ OFS = "," } NR>1{$7=substr($4,2,(length($4)-2))/1024/1024; print}' test1
"2015-10-06","427","060","137765","Samsung Korea","Samsung SM-G900I",0.131383
"2015-10-06","592","620","0","Apple Inc","Apple iPhone 6 (A1586)",0
"2015-10-06","007","290","0","Apple Inc","Apple iPhone 6 (A1586)",0
"2015-10-06","592","050","48836832","Apple Inc","Apple iPhone 5S (A1530)",46.5744
Dies ist das Problem, weil meine Werte in Anführungszeichen "137765" eingeschlossen sind. – HattrickNZ
Ich würde vorschlagen, nach etwas wie Python oder Ruby zu greifen, das einen tatsächlichen CSV-Parser hat, der weiß, wie man korrekt mit zitierten Werten umgeht, oder vielleicht etwas wie das [csv-Befehlszeilentool] (https://github.com/gaal/ app-csv). – larsks