我想要一个能够比较两个文件的 Linux 脚本,比较后应该显示一些内容

我想要一个能够比较两个文件的 Linux 脚本,比较后应该显示一些内容

文件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将包含您想要的输出,您可以将其打印到控制台或您认为合适的任何格式的文件:)

相关内容