Tener un archivo de los siguientes contenidos:
1111,2222,3333,4444
aaaa,bbbb,cccc,dddd
Busco obtener un archivo igual al original pero que carece de una enésima columna como, para n = 2 (o puede ser 3)
1111,2222,4444
aaaa,bbbb,dddd
o, para n = 0 (o puede ser 1)
2222,3333,4444
bbbb,cccc,dddd
Un archivo real puede tener una longitud de gigabytes con decenas de miles de columnas.
Como siempre en tales casos, sospecho que los magos de la línea de comandos pueden ofrecer una solución elegante ... :-)
En mi caso real real, necesito soltar 2 primeras columnas, lo que se puede hacer soltando una primera columna dos veces en una secuencia, pero supongo que sería más interesante generalizar un poco.
text-processing
Ivan
fuente
fuente
,
? (Es decir,,
solo se usa como separador de campo.),
y nunca ocurre dentro de un campo.Respuestas:
Creo que esto es específico para cortar de los coreutils de GNU:
Normalmente, especifica los campos que desea mediante -f, pero al agregar --complemento, revierte el significado, naturalmente. De 'hombre cortado':
Una advertencia: si alguna de las columnas contiene una coma, se cortará, porque cortar no es un analizador CSV de la misma manera que una hoja de cálculo. Muchos analizadores tienen ideas diferentes sobre cómo manejar las comas de escape en CSV. Para el caso simple de CSV, en la línea de comando, cortar sigue siendo el camino a seguir.
fuente
cut
descartará porque no es un analizador CSV. Si un campo CSV tiene un separador de campo en su valor, está entre comillas. Por cierto, sobre el temacut
,-f
toma rangos de campo.cut -f, -d3-
generará el tercer campo activado, eliminando los dos primeros.cut -d, -f3-
Si los datos se componen simplemente de columnas separadas por comas:
También puede usar awk, pero es un poco incómodo porque, aunque borrar un campo es fácil, quitar el separador requiere algo de trabajo. Si no tiene un campo vacío, no está tan mal:
Si tiene un CSV real, donde las comas pueden aparecer dentro de los campos si se citan correctamente, necesita una biblioteca CSV real .
fuente