我如何从网络上区分两个文件

时间:2013-05-03 14:46:38

标签: unix curl pipe diff command-line-interface

我想看看不在本地文件系统中但在网络上的2个文件的差异。所以,我认为如果必须使用diffcurl和某种管道。

这样的东西
curl http://to.my/file/one.js http://to.my/file.two.js | diff 

但它不起作用。

2 个答案:

答案 0 :(得分:34)

UNIX工具diff可以比较两个文件。如果使用<()表达式,则可以在间接值中比较命令的输出:

diff <(curl file1) <(curl file2)

所以在你的情况下,你可以说:

diff <(curl http://to.my/file/one.js) <(curl http://to.my/file.two.js)

答案 1 :(得分:1)

到达此页面的某些人可能正在寻找逐行差异而不是代码差异。如果是这样,并且使用coreutils,您可以使用:

comm -23 <(curl http://to.my/file/one.js | sort) \
         <(curl http://to.my/file.two.js | sort)

获取第一个文件中不在第二个文件中的行。您可以使用comm -13在第二个文件中获取不在第一个文件中的行。

如果您不限于coreutils,您还可以使用sd(流差异),它不需要排序或处理替换并支持无限流,如下所示:

curl http://to.my/file/one.js | sd 'curl http://to.my/file.two.js'

它支持无限流的事实允许一些有趣的用例:你可以在while(true)循环内使用curl(假设页面只给你“new”结果),{{1}在没有新的流线路的指定时间后,它将超时流。

这是我写的关于在终端上传播流的blogpost,它引入了sd