从输入文件循环列表来做差异

时间:2016-03-09 19:17:44

标签: bash

如何编写bash脚本(做差异),将文件作为输入,其中包含需要以1:1方式进行比较的文件名列表。 输入文件的内容如下所示:

file1.a file1.b
file2.a file2.b
file3.a file3.b
file(n).a file(n).b

因此diff应该只执行以下循环:

diff file1.a file1.b
diff file2.a file2.b
diff file3.a file3.b

我将使用位置参数输入文件,并使用awksed来获取相应的名称。但我不确定如何在文件结束之前将其作为循环。

2 个答案:

答案 0 :(得分:1)

使用GNU bash:

#!/bin/bash

while read -r f1 f2; do
  diff "$f1" "$f2"
done < "$1"

答案 1 :(得分:1)

您可以使用xargs在一行中完成此操作(使用difflist.txt作为输入文件):

xargs -n2 diff < difflist.txt

xargs构建一个命令行,从管道获取参数(这里由于-n2正好2)并使用它们执行diff。