Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/03/2015, 04:05
letni
 
Fecha de Ingreso: octubre-2008
Mensajes: 276
Antigüedad: 15 años, 6 meses
Puntos: 1
Pregunta Reemplazar un texto en un fichero manteniendo el formato

Hola,

Imaginemos que tenemos un fichero con este contenido:

Código:
col1     col2     col3     col4     col5
col1     col2     col3     col4     col5
col1     col2     col3     col4     col5
col1     col2     col3     col4     col5
colp     col2     col3     col4     col5
col1     col2     col3     col4     col5
a b col_1     col_2     col_3 col_4 col_5
a b col_1     col_2     col_3 col_4 col_5
a b col_1     col_2     col_3 col_4 col_5
El objetivo es poder cambiar un valor determinado sin perder los espacios en blanco. Por ejemplo quiero cambiar el valor 'col4' de la quinta fila por 'hello', quedaría así:

Código:
col1     col2     col3     col4     col5
col1     col2     col3     col4     col5
col1     col2     col3     col4     col5
col1     col2     col3     col4     col5
colp     col2     col3     hello    col5
col1     col2     col3     col4     col5
a b col_1     col_2     col_3 col_4 col_5
a b col_1     col_2     col_3 col_4 col_5
a b col_1     col_2     col_3 col_4 col_5
Como podemos ver las primeras 6 filas tienen un formato y las siguientes tienen otro formato.

He probado con awk pero no se mantienen los espacios:

Código:
awk '{if($1=="colp"){$4="hello"} print}' test.txt
También he probado a ejecutar un printf antes de la llamada awk de esta manera:

Código:
printf "%4s %8s %8s %8s %8s\n" $(awk '{if($1=="colp"){$4="hello"} print}' test.txt)
Pero se descolocan las tres últimas filas.

¿Cómo puedo hacer esta tarea? Entiendo que no tiene que ser tan complicado cambiar un texto de una determinada columna de una determinada fila por otro.

Saludos.
__________________
Uso Apache 2.2 con PHP 5.5.9 y MySQL 5.1
Uso Eclipse IDE for Java Developers, Version: Mars.1 Release (4.5.1), Build id: 20150924-1200 para programar en Java bajo Windows