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.