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/'

関連情報