2013-05-03 19 views
10

Yerel dosya sisteminde değil, web'de bulunan 2 dosyanın farklılıklarını görmek istiyorum. Yani, diff, curl ve bir çeşit boru kullanmanız gerekiyorsa düşünüyorum.Web'den iki dosyayı nasıl dağıtırım

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

gibi

şey ama çalışmıyor.

+0

Yerel dosya sistemine bunları yazın? :) – Ryan

+3

'diff <(curl oneweb) <(curl otherweb)' nedir? – fedorqui

+0

@fedorqui, neden buna cevap vermiyor? it's right :) –

cevap

24

UNIX aracı diff, iki dosyayı karşılaştırabilir. Eğer <() ifadesini kullanırsanız, indirections içinde komut çıkışını karşılaştırabilirsiniz: sizin durumunuzda Yani

diff <(curl file1) <(curl file2) 

, şunları söyleyebilirsiniz:

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

Güzel bir, ben ** - s ** kıvırmak sessizlik ve sadece içeriği karşılaştırmak eklemek istiyorum: 'diff <(curl -s http://to.my/file/one.js) <(curl -s http://to.my/file.two.js)' – dsantaolalla

1

bu sayfayı gelen bazı insanlar olabilir Bir kod farkından ziyade, bir satır-çizgi farkı arıyor. Eğer öyleyse, ve coreutils ile şunu kullanabilirsiniz:

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

ikinci dosyada olmayan ilk Dosyadaki satırları almak için. İlk dosyada olmayan ikinci dosyada satır almak için comm -13'u kullanabilirsiniz. Eğer coreutils ile sınırlı değildir ediyorsanız

, ayrıca şöyle sonsuz akışı sıralama ne de süreç ikamesi gerektirmez ve destekler etmeyen, sd (akış diff) kullanabilirsiniz:

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

Gerçek şu ki Sonsuz akışları, bazı ilginç kullanım durumları için destekler: while(true) döngüsünde bir kıvrımla kullanabilirsiniz (sayfanın size yalnızca "yeni" sonuçlar verdiğini varsayarak) ve sd akışı, belirli bir süreden sonra yeni akış çizgileri olmadan akışı zaman aşımına uğratacaktır .

İşte bir blogpostsd'u tanıtan terminalde farklı akışlar hakkında yazdım.