2013-03-06 65 views
1

可以說具有以下條目林行:批處理腳本刪除一個CSV是空的某列

*ARTNR;*BESTAND;*HERSTARTNR;*WG;*WG2;*LWG;*LWG2 
1000;2758;;PAS;;Passive Bauelemente; 
5800;0;;PAS;MIC;Passive Bauelemente;Microchip Technology 
5801;0;;AKT;AMP;Aktive Bauelemente;TE connectivity 
5802;0;;PAS;;Passive Bauelemente; 
5803;0;"PDZ 4,3B 7""SOD323";AKT;;Aktive Bauelemente; 
5804;0;;MEC;HON;Elektromechanik;Honeywell 
5805;0;;MEC;;Elektromechanik; 
5806;0;;MEC;;Elektromechanik; 
5807;0;;MEC;HON;Elektromechanik;Honeywell 
5809;0;;AKT;ORS;Aktive Bauelemente;Osram Opto Semiconductors 
5810;0;61240090;MEC;;Elektromechanik; 
5811;0;AT89C55WD-24PU;AKT;ATM;Aktive Bauelemente;Atmel 
5815;0;;MEC;;Elektromechanik; 
5816;0;;MEC;;Elektromechanik; 

我現在想刪除都在科拉姆空的所有行,* HERSTARTNR像 第一行。這是可能的批處理腳本?

謝謝

+0

python非常簡單 – 2013-03-06 13:43:30

回答

0

請問這是訣竅嗎?

perl -ne 'print unless /^\d+;\d+;;/' file.csv 
2

要保留標題行,請在前兩列中測試非分號。

在Windows中:

findstr /v "^[^;]*;[^;]*;;" old.csv >new.csv 

在* nix中:

grep -P -v '^[^;]*;[^;]*;;' old.csv >new.csv 

Linux示例:

[email protected]:~$ grep -P -v '^[^;]*;[^;]*;;' old.csv > new.csv 
[email protected]:~$ cat new.csv 
*ARTNR;*BESTAND;*HERSTARTNR;*WG;*WG2;*LWG;*LWG2 
5803;0;"PDZ 4,3B 7""SOD323";AKT;;Aktive Bauelemente; 
5810;0;61240090;MEC;;Elektromechanik; 
5811;0;AT89C55WD-24PU;AKT;ATM;Aktive Bauelemente;Atmel 

Windows示例:

C:\Users\me\Desktop>findstr /v "^[^;]*;[^;]*;;" old.csv > new.csv 
C:\Users\me\Desktop>type new.csv 
*ARTNR;*BESTAND;*HERSTARTNR;*WG;*WG2;*LWG;*LWG2 
5803;0;"PDZ 4,3B 7""SOD323";AKT;;Aktive Bauelemente; 
5810;0;61240090;MEC;;Elektromechanik; 
5811;0;AT89C55WD-24PU;AKT;ATM;Aktive Bauelemente;Atmel