Ver Mensaje Individual
  #3 (permalink)  
Antiguo 23/03/2015, 08:55
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Reemplazar un texto en un fichero manteniendo el formato

Todo depende de lo que estés necesitando hacer. Si se trata de una conversión que siempre vas a tener que hacer en la misma columna y con el mismo valor, o se trata de una conversión que necesitás hacer en cualquier columna, y por cualquier valor, periódicamente.

Por ejemplo, si los valores de todas las columnas son distintos, reemplazar 'col4' por 'hello' en la línea 5 puede ser tan fácil como
Código BASH:
Ver original
  1. sed -i.bkp '5 /col4/hello/' archivo.txt
Sed no sabe de campos separados por espacios, pero puede ser suficiente.

También podés hacer un script que envíe a AWK solamente las líneas que cumplan el formato de las primeras 3, y no las demás, o prescindir de AWK totalmente:
Código BASH:
Ver original
  1. while read LINEA; do
  2.     COL4=$(echo $LINEA | awk '{ print $4 }')
  3.     if [[ $COL4 = 'col4']]; then
  4.         echo $LINEA | sed s/col4/hello/g
  5.     else
  6.         echo $LINEA
  7.     fi
  8. done

Realmente es sorprendente y algo decepcionante que AWK pierda la línea original al acceder a uno de los campos, pero si es el comportamiento esperado no queda otra opción que trabajar con eso

Saludos.