Imaginemos que tenemos un fichero con este contenido:
Código:
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í: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
Código:
Como podemos ver las primeras 6 filas tienen un formato y las siguientes tienen otro formato.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
He probado con awk pero no se mantienen los espacios:
Código:
También he probado a ejecutar un printf antes de la llamada awk de esta manera:awk '{if($1=="colp"){$4="hello"} print}' test.txt
Código:
Pero se descolocan las tres últimas filas.printf "%4s %8s %8s %8s %8s\n" $(awk '{if($1=="colp"){$4="hello"} print}' test.txt)
¿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.