2010-07-28 69 views
5

tengo un archivo CSV:Rellene una columna en un archivo CSV con POWERSHELL V2

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

¿Cómo lleno en COL3 con un valor predeterminado X?

lo que el resultado sería:

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

¿Cómo puedo lograr esto utilizando PowerShell V2 o incluso ultraedit o Notepad ++

Gracias

+0

utilizar mi herramienta CSVfix FOSS en http: //code.google.com/p/csvfix/ - hace que hacer cosas como esta sea muy sencillo. –

+0

Gracias, lo intento, pero estoy tratando con archivos CSV especiales, con delimitadores dobles de tubería || y con más de 500 000 líneas ... Así que probé este comando con tu herramienta: echo -sep '||' myfile.csv ... pero no funciona, simplemente sigue colgado (¿archivo demasiado grande?) – guigui42

+0

CSV como su nombre lo indica está separado de COMMA, lo que tienes no es CSV. Sin embargo, CSVfix puede tratar con otros separadores, pero no con múltiples caracteres separadores. Si ese es su formato (¿por qué?) ¿Por qué no lo usó en su ejemplo anterior? Además, es probable que desee utilizar comillas dobles para citar símbolos de tubería. –

Respuesta

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

en lugar de '; devolver $ _', '; $ _' es suficiente. –

+1

Lo sé, pero es una mejor indicación de lo que quiero decir. –

+2

sí, pero generalmente es confuso para las personas que no conocen el idioma. como guía, considere usar el retorno solo sin argumentos, y solo para salir temprano. francamente, creo que la palabra clave debería haberse diseñado así en primer lugar. functions/scriptblocks early ony. – x0n

Cuestiones relacionadas