文件1
products total
apple 6
yam 5
fish 6
meat 3
文件2
products total
apple 6
yam 7
fish 3
meat 5
我想做的事。我想要一个脚本来比较两个文件的内容,它应该将文件 1 中的产品与文件中的产品相匹配并比较总数,当文件 1 中的总数大于文件 2 中的总数时,它应该显示一些内容,如果不应该显示其他东西
我期待什么
file 1 file 2 the output of the script
products total products total
apple 6 apple 6 they are equal
yam 5 yam 7 file 2 is more
fish 6 fish 3 file 1 is more
meat 3 meat 5 file 2 is more
答案1
如果我正确理解你的问题:
假设文件用制表符分隔,使用循环来存储元素的所有值,然后迭代两个循环来比较它们
prods1=() #product names in file 1
tots1=() #totals in file 1
prods2=() #product names in file 2
tots2=() #totals in file 2
#read in the stored values
while IFS=\t read -r p t; do
prods1+=("$p")
tots1+=("$t")
done <<< file1
while IFS=\t read -r p t; do
prods2+=("$p")
tots2+=("$t")
done <<< file2
output=() #will store your output
for((i=0; i<${#tots1[@]};++i)); #you can set i to 1 if you want to skip the headers
do
#check if the values are equivalent
if ((${tots1[i]} == ${tots2[i]}));
output+="They are equal"
#ADD THE REST OF THE COMPARISONS HERE
fi
done
之后,该数组output
将包含您想要的输出,您可以将其打印到控制台或您认为合适的任何格式的文件:)