bash - punto - ¿Cómo obtener la primera columna de cada línea desde un archivo CSV?
cómo se crea un archivo csv (6)
¿Cómo se obtiene la primera columna de cada línea en un archivo CSV de entrada y se envía a un nuevo archivo? Estoy pensando en usar awk
pero no estoy seguro de cómo.
Prueba esto:
awk -F"," ''{print $1}'' data.txt
Dividirá cada línea de entrada en el archivo data.txt
en diferentes campos basados en ,
carácter (como se especifica con -F
) e imprimirá el primer campo (columna) en stdout.
Puede hacerse:
$ cut -d, -f1 data.txt
Entrada
a,12,34
b,23,56
Código
awk -F "," ''{print $1}'' Input
Formato
awk -F <delimiter> ''{print $<column_number>}'' Input
echo "a,b,c" | cut -d'','' -f1 > newFile
Esto se puede lograr usando grep
:
$ grep -o ''^[^,]/+'' file.csv
Usando Perl:
perl -F, -lane ''print $F[0]'' data.txt > data2.txt
Estas opciones de línea de comando se usan:
-
-n
loop alrededor de cada línea del archivo de entrada -
-l
elimina las nuevas líneas antes del procesamiento y las agrega de nuevo en adelante -
-a
modo autosplit - divide las líneas de entrada en la matriz@F
. El valor predeterminado es la división en espacios en blanco. -
-e
ejecuta el código perl -
-F
modificador de autosplit, en este caso se divide,
Si desea modificar su archivo original in situ, use la opción -i
:
perl -i -lane ''print $F[0]'' data.txt
Si desea modificar su archivo original in situ y hacer una copia de seguridad:
perl -i.bak -lane ''print $F[0]'' data.txt
Si sus datos están separados en espacios en blanco en lugar de estar separados por comas:
perl -lane ''print $F[0]'' data.txt