使用shell脚本在单行中添加和乘法项

时间:2014-08-03 03:34:16

标签: shell unix awk

我目前有一个变量`$ var1',其中包含以下内容:

4 -38 2 -42 1 -43 10 -44 1 -45 6 -46 1 -48 1 -49

我想添加50,然后每隔一个数乘以2。也就是说,

(-38 + 50) * 2 = 24

(-42 + 50) * 2 = 16

然后,我想将-38替换为24,将-42替换为16。我应该怎么做呢?

您是否会使用awk执行此操作?如果是这样,你如何在一行中循环每个项目?我看到awk可以遍历行,但还没有看到循环遍历项目的示例。

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

试试这个:

echo $var | awk -F" " '{ for (i=1; i<=NF; i++) if(i%2 == 0) printf "%d ",( $i + 50 ) * 2 ; else printf "%d ",$i  }'

答案 1 :(得分:1)

$ echo "$var1" | awk '{for (i=2;i<=NF;i+=2) $i=($i+50)*2}1'
4 24 2 16 1 14 10 12 1 10 6 8 1 4 1 2