使用 awk 或 sed 取代句子中小於 8 的單字或數字

使用 awk 或 sed 取代句子中小於 8 的單字或數字

下面有一個範例,如果第 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

sed選擇:

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

相關內容