es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Utilizando Unix (awk, sed, bash?) para truncar elementos en una columna por el cuarto guión bajo?

Tengo una serie de archivos que se ven así, la segunda y tercera columna son duplicados pero con miles de líneas.

Quiero tomar la tercera columna y truncarla para que se elimine todo en la cadena después e incluyendo _i, así:

Los números después de cada combinación de letras (DN, c, g, i, p) pueden ser cualquier cosa y también pueden ser de cualquier longitud, por lo que no puedo simplemente truncar a cierta longitud.

He intentado sed -i 's/_i.*//' file.txt, pero esto elimina todo después de cada línea y no solo la columna de interés.

¡Muchas gracias!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Puedes utilizar el comando awk para lograr esto. Prueba el siguiente comando:

    awk '{gsub(/_[^_]+$/,"",$3)}1' archivo.txt

    Esto reemplazará todo después del último guion bajo en la tercera columna con una cadena vacía. El 1 al final imprimirá las líneas modificadas.

    ¡Espero que esto ayude!

Comments are closed.