reemplazar una palabra o número en una oración menor que 8 usando awk o sed

reemplazar una palabra o número en una oración menor que 8 usando awk o sed

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, awksugerirí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/'

información relacionada