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 originalsed -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 originalwhile read LINEA; do
COL4=$(echo $LINEA | awk '{ print $4 }')
if [[ $COL4 = 'col4']]; then
echo $LINEA | sed s/col4/hello/g
else
echo $LINEA
fi
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.