使用 awk 或 sed 替换句子中小于 8 的单词或数字

Chr*_*ten 4 awk text-processing

我在下面有一个示例,如果第 9 列的值小于 8,则需要替换它,否则使用 sed 或 awk 函数退出或忽略:

) in datadbs extent size 16 next size 4 lock mode row;
Run Code Online (Sandbox Code Playgroud)

如果我使用下面的 awk 函数,它只会在第 9 列中打印我需要的值,但我仍然想保持句子结构。

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

输出:

8
Run Code Online (Sandbox Code Playgroud)

我想要的是以下内容:

) in datadbs extent size 16 next size 8 lock mode row;
Run Code Online (Sandbox Code Playgroud)

Phi*_*pos 6

在不知道的情况下,awk我建议更改参数并打印所有内容:

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

  • 或者甚至只是`awk '$9 &lt; 8 { $9 = 8 } 1'` (2认同)