1

次のエントリがあるとしましょう。

*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 という列の空のすべての行を削除したいと思います。これはバッチスクリプトで可能ですか?

ありがとうございました

4

2 に答える 2

3

ヘッダー行を保持するには、最初の2列で非セミコロンをテストします。

Windowsの場合:

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

* nixの場合:

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

Linuxの例:

rojo@pico:~$ grep -P -v '^[^;]*;[^;]*;;' old.csv > new.csv
rojo@pico:~$ 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
于 2013-03-06T13:51:49.917 に答える
0

これでうまくいきますか?

perl -ne 'print unless /^\d+;\d+;;/' file.csv
于 2013-03-06T12:30:46.583 に答える