2013-05-03 50 views
10

我想查看兩個文件不在本地文件系統中但在網絡上的區別。所以,我認爲如果必須使用diffcurl和某種管道。我如何區分網絡上的兩個文件

喜歡的東西

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

,但它不工作。

+0

將它們寫入本地文件系統? :) – Ryan 2013-05-03 14:48:20

+3

'diff <(curl oneweb)<(curl otherweb)'呢? – fedorqui 2013-05-03 14:48:21

+0

@fedorqui爲什麼不回答這個?這是正確的:) – 2013-05-03 19:09:15

回答

24

UNIX工具diff可以比較兩個文件。如果使用<()表達,可以將間接引用中比較命令的輸出:

diff <(curl file1) <(curl file2) 
你的情況

所以,你可以說:

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

不錯,我會添加** - s **使捲曲沉默,只比較內容,如: 'diff <(curl -s http://to.my/file/one.js)<(curl -s http://to.my/file.two.js)' – dsantaolalla 2014-05-05 10:42:19

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)循環內部使用它(假設頁面只給你「新」結果),並且sd會在特定時間後超時流,沒有新的流線。

這裏是一個blogpost我寫了關於在終端上的差異流,它介紹了sd

相關問題