Separador de filas después de usar AWK

Separador de filas después de usar AWK
awk -F ';' '{print $1}' FileName

Estoy usando este comando para imprimir la primera columna de un archivo delimitado por punto y coma.

Ahora, tengo que recorrer el resultado del comando anterior. Si mi salida es

0
1
2

Tengo que recorrer cada registro y tengo que especificar en la iteración cuál es mi delimitador de registro en mi salida.

¿Hay alguna manera de imprimir el resultado como se muestra a continuación?

0;1;2

Para poder iterar diciendo que el delimitador es;

Respuesta1

para evitar el punto y coma final

 awk -F\; 'NR>1 { printf ";" ;} {printf "%s",$1;} END {printf "\n"} '
  • printfno imprimir avance de línea
  • NR>1imprimir solo después de la primera línea
  • ENDimprimir después de la última línea.

Respuesta2

awkgenera el valor de ORS(separador de registros de salida) al final de cada printdeclaración. Es una nueva línea por defecto, pero puedes cambiarla:

$ cat foo.txt
0;3;6
1;4;7
2;5;8
$ awk -vORS=';' -F';' '{print $1} END {printf "\n"}'  foo.txt
0;1;2;

Agregué END {printf "\n"}para obtener una nueva línea al final del resultado.

Respuesta3

También puedes usar coreutils:

<foo.txt cut -d';' -f1 | paste -sd';'

información relacionada