我目前有一个变量`$ 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
可以遍历行,但还没有看到循环遍历项目的示例。
感谢您的帮助。
答案 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