Как удалить два файла из Интернета
Я хочу видеть различия в 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
.