Как удалить два файла из Интернета

Я хочу видеть различия в 2 файлах, которые не находятся в локальной файловой системе, но в Интернете. Итак, я думаю, что если вам нужно использовать diff, curl и какой-то трубопровод.

Что-то вроде

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

но это не сработает.

Ответ 1

Инструмент UNIX diff может сравнивать два файла. Если вы используете выражение <(), вы можете сравнить выходные данные команды по косвенным ссылкам:

diff <(curl file1) <(curl file2)

Так что в вашем случае вы можете сказать:

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

Ответ 2

Некоторые люди, приходящие на эту страницу, могут искать линейный diff, а не код-diff. Если это так, и с помощью coreutils вы можете использовать:

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

Получить строки в первом файле, которые не находятся во втором файле. Вы можете использовать comm -13, чтобы получить строки во втором файле, которые не находятся в первом файле.

Если вы не ограничены coreutils, вы также можете использовать sd (поток diff), который не требует сортировки и подстановка процесса и поддерживает бесконечные потоки, например:

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

Тот факт, что он поддерживает бесконечные потоки, позволяет использовать некоторые интересные варианты использования: вы можете использовать его с curl внутри цикла while(true) (при условии, что страница дает вам только "новые" результаты), а sd будет тайм-аут поток через определенное время без новых потоковых линий.

Здесь blogpost Я написал о различных потоках на терминале, который вводит sd.