заменить слово или число в предложении, которое меньше 8, используя awk или sed

заменить слово или число в предложении, которое меньше 8, используя awk или sed

Ниже приведен пример, в котором мне нужно заменить значение столбца 9, если оно меньше 8, в противном случае выйти или проигнорировать, используя функцию sed или awk:

) in datadbs extent size 16 next size 4 lock mode row;

Если я использую приведенную ниже функцию awk, она выведет только нужное мне значение в столбце 9, но я все равно хочу сохранить структуру предложения.

echo ") in datadbs extent size 16 next size 4 lock mode row;" | 
 awk '{if ($9 < 8 ) print 8;}'

ВЫХОД:

8

Мне нужно следующее:

) in datadbs extent size 16 next size 8 lock mode row;

решение1

Не зная ничего, awkя бы предложил изменить параметр и вывести все на печать:

echo ") in datadbs extent size 16 next size 4 lock mode row;" | 
  awk '{if ($9 < 8 ) $9 = 8; print;}'

решение2

sed -e 's/\S\+/&\n/9; s/ [0-7]\n/ 8/'

решение3

седальтернатива:

s=") in datadbs extent size 16 next size 4 lock mode row;"
echo $s | sed 's/size [0-7] lock/size 8 lock/'

Связанный контент