我有一个名为 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
但我的方法不起作用。如何正确完成这项任务?
答案 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))"