substitua uma palavra ou número em uma sentença menor que 8 usando awk ou sed

4

Eu tenho um exemplo abaixo onde eu preciso substituir o valor da coluna 9 se for menor que 8 else sair ou ignorar usando a função sed ou awk:

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

Se eu usar a função awk abaixo, ele só imprime o valor necessário na coluna 9, mas ainda quero manter a estrutura da frase.

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

OUTPUT:

8

O que eu quero é o seguinte:

) in datadbs extent size 16 next size 8 lock mode row;
    
por Christopher Karsten 12.04.2017 / 14:34

3 respostas

6

Sem saber awk , sugiro alterar o parâmetro e imprimir tudo:

echo ") in datadbs extent size 16 next size 4 lock mode row;" | 
  awk '{if ($9 < 8 ) $9 = 8; print;}'
    
por 12.04.2017 / 14:40
3
sed -e 's/\S\+/&\n/9; s/ [0-7]\n/ 8/'
    
por 12.04.2017 / 15:42
2

sed alternativa:

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