从文件中读取每行的多个参数,并使用shell脚本进行算术运算

时间:2015-07-14 16:20:27

标签: linux bash shell

我有一个名为 List<Map<Integer, Map<Long, Integer>>> myList = new LinkedList<>(); for(Map<Integer,Map<Long,Integer>> myListMap: myList){ for(Entry<Integer, Map<Long,Integer> myListMapEntry : myListMap.entrySet()){ Integer myListMapEntryInt = myListMapEntry.getKey(); for(Entry<Long, Integer> myListMapEntryValue : myListMapEntry.getValue()){ Long myListMapEntryValueLong = myListMapEntryValue.getKey(); Integer myListMapEntryValueInteger = myListMapEntryValue.getValue(); } } } 的文件:

input.txt

此文件的每一行代表A 1 2 B 3 4 A=1*2=2 ... 所以我想将这样的计算输出到文件B=3*4=12

output.txt

我想使用shell脚本A=2 B=12 来完成这项任务:

calculate.sh

我键入:

#!/bin/bash
while read name; do
    $var1=$(echo $name | cut -f1)
    $var2=$(echo $name | cut -f2)
    $var3=$(echo $name | cut -f3)
    echo $var1=(expr $var2 * $var3)
done

但我的方法不起作用。如何正确完成这项任务?

4 个答案:

答案 0 :(得分:3)

我会用awk。

$ awk '{print $1"="$2*$3}' file
A=2
B=12

使用输出重定向运算符将输出存储到另一个文件。

awk '{print $1"="$2*$3}' file > outfile

答案 1 :(得分:1)

calculate.sh:

#!/bin/bash
while read a b c; do
    echo "$a=$((b*c))"
done

bash calculate.sh < input.txt输出:

A=2
B=12

答案 2 :(得分:1)

在BASH,你可以这样做:

while read -r a m n; do printf "%s=%d\n" $a $((m*n)); done < input.txt > output.txt

cat output.txt
A=2
B=12

答案 3 :(得分:0)

对于bash进行数学运算需要双括号:

echo "$((3+4))"