以下に、列 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/'