Recortar un valor procedente de un campo awk

Recortar un valor procedente de un campo awk

Estoy analizando un archivo y uso awk para obtener el primer y tercer campo.

Todo esto está bien; pero en el primer campo me gustaría recortar los últimos 4 caracteres de esa cadena; Hasta ahora no encontré una manera de hacer esto en awk, y la única forma de hacerlo es realizar varias llamadas, por lo que guardo la salida de awk en 2 variables y luego recorto la primera cadena.

¿Existe una forma más eficiente de hacerlo? Así es como se ve el archivo

abcdefghi.234,12345,xyz
riosadsef.543,19432,eis
baifafsag.342,01934,eod

Esto es lo que ejecuto en el bucle.

echo $output | awk -F, "{print $1, $3}"

Esto imprimirá la línea correctamente, pero luego quiero recortar $1, eliminando los últimos 4 caracteres.

Respuesta1

Un método es utilizar substrla función de awk. Por ejemplo, comenzando con esta entrada:

$ cat input
abcdefghi.234,12345,xyz
riosadsef.543,19432,eis
baifafsag.342,01934,eod

Podemos imprimir las columnas uno y tres, omitiendo los últimos cuatro caracteres de la columna uno con:

$ awk -F, '{print substr($1, 1, length($1)-4), $3}' input
abcdefghi xyz
riosadsef eis
baifafsag eod

información relacionada