Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 将不同列中字符串后的数字相乘,然后将结果添加到一列中_Bash_Awk - Fatal编程技术网

Bash 将不同列中字符串后的数字相乘,然后将结果添加到一列中

Bash 将不同列中字符串后的数字相乘,然后将结果添加到一列中,bash,awk,Bash,Awk,嗨,我需要在不同列中的字符串后面乘以数字,然后将结果添加到一列中 value=12 value2=5 value3=2 这个操作看起来像这样,乘法器是由列索引定义的,或者如果它可以由数字前面的字符串定义 value=12*2 value2=5*4 value3=2*7 value=24 + value2=20 + value3=14 value=58 假设提供了索引映射,它将列索引映射到给定的乘数,例如 1 -> 2 2 -> 4 3 -> 7 尝试使用此脚本或以

嗨,我需要在不同列中的字符串后面乘以数字,然后将结果添加到一列中

value=12 value2=5 value3=2
这个操作看起来像这样,乘法器是由列索引定义的,或者如果它可以由数字前面的字符串定义

value=12*2 value2=5*4 value3=2*7
value=24 + value2=20 + value3=14
value=58

假设提供了索引映射,它将列索引映射到给定的乘数,例如

 1 -> 2
 2 -> 4 
 3 -> 7
尝试使用此脚本或以下“一行代码”(可能不是最优雅的代码):


因此,我们鼓励用户发布他们为解决自己的问题所付出的努力,请添加并让我们知道。乘法器是如何定义的?通过列索引?有太多的东西可能意味着如果没有更多的信息就很难得到答案。乘数不是上升的,可以是第1层上的任何数字。下一个确保把所有相关的信息都放在你的问题中,而不是分散在评论中。所以。。。您有一个将列的索引映射到乘数的映射吗?
#!/bin/bash
INPUT="value=12 value2=5 value3=2"
m=(2 4 7)

IFS=' ' read -ra IN <<< "$INPUT"
for ((i=0; i<${#IN[@]}; ++i)); do
  tmp=${IN[$i]}
  sum=$((sum + $(awk -F '=' -v m="${m[$i]}" '{print m*$2}' <<< ${tmp##value})))
done
echo $sum
awk -F ' ' 'BEGIN {m[1]=2; m[2]=4; m[3]=7;} {for (i=1; i <= NF; i++) {split($(i),a,"="); sum+=m[i] * a[2];}} END { print sum; } ' <<< "value=12 value2=5 value3=2"
INPUT="value=12 value2=5 value3=2"
IFS=' ' read -ra IN <<< "$INPUT"
sum=0
for i in "${IN[@]}"; do
  sum=$((sum + $(awk -F '=' '{print (!$1 ? 2 : $1+1) * $2}' <<< ${i##value})))
done
echo $sum