2010-07-28 15 views
5

ho un file CSV:, compili una colonna in un file CSV utilizzando POWERSHELL V2

COL1;COL2;COL3;COL4 
1;1;;4 
6;9;;0 
9;8;;4 

Come si compila in COL3 con un valore predefinito X?

modo che il risultato sarebbe:

COL1;COL2;COL3;COL4 
1;1;x;4 
6;9;x;0 
9;8;x;4 

Come posso ottenere questo usando PowerShell V2 o anche ultraedit o Notepad ++

Grazie

+0

Usa la mia FOSS strumento CSVfix all'indirizzo http: //code.google.com/p/csvfix/ - rende facile fare cose del genere. –

+0

Grazie, ci sto provando, ma mi sto occupando di file CSV speciali, con delimitatori a doppio tubo || e con più di 500 000 linee .. Così ho provato questo comando con il tuo strumento: echo -sep '||' myfile.csv ... ma non funziona, continua a rimanere sospeso (file troppo grande?) – guigui42

+0

CSV come suggerisce il nome è COMMA separato - quello che hai non è CSV. Tuttavia, CSVfix può gestire altri separatori, ma non più caratteri separatori. Se questo è il tuo formato (perché ??) perché non lo hai usato nell'esempio sopra? Inoltre, probabilmente vorrai usare le virgolette per citare i simboli delle pipe. –

risposta

7
Import-CSV -Path "input.csv" -Delimiter ';' | ` 
ForEach-Object { $_.COL3 = "x"; return $_ } | ` 
Export-CSV -Path "output.csv" -Delimiter ';' -NoTypeInformation 
+2

Invece di '; return $ _', '; $ _' è sufficiente. –

+1

Lo so, ma è una migliore indicazione di cosa intendo. –

+2

sì, ma generalmente confonde le persone nuove con la lingua. come linea guida, considera l'utilizzo di return only senza argomenti e solo per uscire anticipatamente. francamente, penso che la parola chiave avrebbe dovuto essere progettata in quel modo in primo luogo. – x0n

Problemi correlati