Tengo un ejemplo a continuación donde necesito reemplazar el valor de la columna 9 si es menor que 8; de lo contrario, salgo o ignoro el uso de la función sed o awk:
) in datadbs extent size 16 next size 4 lock mode row;
Si uso la siguiente función awk, solo imprime el valor que necesito en la columna 9, pero aún así quiero mantener la estructura de la oración.
echo ") in datadbs extent size 16 next size 4 lock mode row;" |
awk '{if ($9 < 8 ) print 8;}'
PRODUCCIÓN:
8
Lo que quiero es lo siguiente:
) in datadbs extent size 16 next size 8 lock mode row;
Respuesta1
Sin saber nada, awk
sugeriría cambiar el parámetro e imprimir todo:
echo ") in datadbs extent size 16 next size 4 lock mode row;" |
awk '{if ($9 < 8 ) $9 = 8; print;}'
Respuesta2
sed -e 's/\S\+/&\n/9; s/ [0-7]\n/ 8/'
Respuesta3
sedalternativa:
s=") in datadbs extent size 16 next size 4 lock mode row;"
echo $s | sed 's/size [0-7] lock/size 8 lock/'