如何将程序的输出与文本文件的行进行比较?

时间:2014-10-30 22:18:37

标签: bash scripting

我有一个文本文件,每行包含一个数字。共有5行。

我还有一个程序可以运行并输出5个数字,每行一个。程序的输出应与文本文件的每一行上的数字相匹配。

如何检查数字是否相等?

我正在使用bash

3 个答案:

答案 0 :(得分:1)

假设生成数字的程序称为program,并且带有引用号的文件称为file。比较它们:

program | cmp - file || echo "Fail"

cmp是一个比较两个文件的程序,其中一个文件可以是stdin,由-表示。因此,cmp - filefile中的内容与program上的stdin上提供的内容进行比较。

如果您想要详细报告两者的不同之处,请使用diff代替cmp

program | diff - file

答案 1 :(得分:0)

echo -n 'The numbers are '
[[ $(< numsfile) == $(< ./numsprog ) ]] && echo 'the same' || echo different

这假设文件numsfile或程序numsprog的输出中没有空格或其他非数字字符(换行符除外)。

答案 2 :(得分:0)

从最复杂的情​​况来看:你可以比较两个节目的输出

diff -q <(seq 1 5) <(seq 2 6)

如果您喜欢管道,可以用-(意思是标准输入)替换任何参数

seq 1 5 | diff -q - <(seq 2 6)

要解决您的问题,请先将seq替换为您的程序,将<(...)替换为您的文件名。