过滤文件,在包含特定字符串的行中乘以一个值,返回所有行

过滤文件,在包含特定字符串的行中乘以一个值,返回所有行

使用 grep 过滤文件,从过滤的行中对特定列执行数学运算,仅在包含字符串“value=”的行中,返回第一个 grep 过滤器中的所有行以及完成数学运算的行。

例子:

使用 grep 过滤包含字符串“update”的行,这很简单,我明白了。

输出:

...
列 1 列 2更新  第 4 列 第 5 列
列 1 列 2更新  值= 320
列 1 列 2更新  第 4 列 第 5 列
列 1 列 2更新  值= 210
...

现在我只需要选择包含字符串“value=”的行并将下一列乘以 25,但仍然得到不包含 value= 字符串的行

输出:

...
col1 col2 更新 col4 col5
col1 col2 更新  值= 8000
col1 col2 更新 col4 col5
col1 col2 更新  值= 5250
...

我尝试过使用 if 语句和 awk,但只返回完成数学运算的行。

答案1

要执行数学运算,您必须使用awk或更高版本(sed 和 grep 不能执行数学运算)。

替换 awk 中的 grep 非常简单,只需使用正则表达式/update/

awk '/update/ { if ($4=="value=") { $5*=25 }; print }' ./file

答案2

我懂了:

awk '$4=="value=" {$5=($5*25)}1' foo

相关内容