下面有一个示例,如果第 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/'