
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 substr
la 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