Linux
過濾文件,在包含特定字元串的行中乘一個值,返回所有行
使用 grep 過濾文件,從過濾後的行中對特定列進行數學運算,僅在包含字元串“value =”的行中,返回第一個 grep 過濾器中的所有行以及完成數學運算的行.
例子:
使用 grep 過濾包含字元串“update”的行,這很簡單,我明白了。
輸出:
... col1 col2**更新** col4 col5 col1 col2**更新** 值= 320 col1 col2**更新** col4 col5 col1 col2**更新** 值= 210 ...
現在我只需要選擇包含字元串“value=”的行並將下一列乘以 25,但仍然得到沒有 value= 字元串的行
輸出:
... col1 col2 更新 col4 col5 col1 col2 更新 **值= 8000** col1 col2 更新 col4 col5 col1 col2 更新 **值= 5250** ...
我嘗試使用 if 語句和 awk,但只返回完成數學運算的行。
我懂了:
awk '$4=="value=" {$5=($5*25)}1' foo
要執行數學運算,您必須使用
awk
或更高版本(sed 和 grep 不能進行數學運算)。替換 awk 中的 grep 非常簡單,只需使用正則表達式
/update/
:awk '/update/ { if ($4=="value=") { $5*=25 }; print }' ./file