Можно ли как-нибудь прочитать несколько строк массивного онлайн-файла CSV, используя его URL из командной строки, прежде чем я собираюсь его скачать?
Немного более быстрое, чем @musher должно было бы сделать это:
wget http://datagov.ic.nhs.uk/presentation/2014_03_March/T201403PDPI+BNFT.CSV -qO -
Эти O
произведет результаты к stdout в терминале, в то время как q
опция подавляет материал о загрузке прогресса и т.д. Необходимо было бы нажать Ctrl + C справедливо быстро для остановки его загрузка, потому что, поскольку это - текст, который это загрузит справедливо быстро.
Это могло бы также работа - она должна загрузить на stdout первые десять строк:
wget http://datagov.ic.nhs.uk/presentation/2014_03_March/T201403PDPI+BNFT.CSV -qO - | head -10
Это должно быть прекрасно, целый wget прекращает загружать после первого 10
строки прошли head
... Я проверил, и wget
, кажется, прекращает загружать после того, как первые 10 строк были считаны.
Редактирование: команда wget будет закрыта сигналом SIGPIPE
- видят здесь
, можно изменить количество строк, считанных путем изменения числа после head -
Это может быть не только начало файла, который необходимо считать:
Для чтения других частей, чем первое Вы могли использовать Запрос HTTP для диапазона, например, с --range
опция curl
, получить часть файла от некоторого положения байта до другого:
curl --range 500-700 ...
Относительно формата файла CSV - Вы предположили бы, какая часть могла быть полезной, получить ту часть и отредактировать ее вручную для удаления частичных строк данных.
Например, для взгляда на 500 байтов/символы, начинающих с байта 50000:
URL="http://datagov.ic.nhs.uk/presentation/2014_03_March/T201403PDPI+BNFT.CSV"
curl --range 50000-50500 "$URL"
2.79,0000030,201403,
Q44,RXA,Y00327,1108010F0AAABAB,Hypromellose_Eye Dps 0.5% ,0000001,00000000.81,00000000.76,0000010,201403,
Q44,RXA,Y00327,110801000BLAPA0,Blephasol_Lot ,0000001,00000007.53,00000006.97,0000100,201403,
Q44,RXA,Y00327,110801000BLAQA0,Blephaclean_Eye Lid Wipe ,0000001,00000010.68,00000009.89,0000040,201403,
Q44,RXA,Y00327,1201010F0BBAAAA,Locorten-Viof$
Отметьте, как первая и последняя строка отключена, поскольку фактическая часть файла была "просто некоторым текстом" файла, не "некоторыми записями CSV".
Общие веб-серверы поддерживают "Диапазон" в целом,
но возможно, что по некоторым причинам "Диапазон" не работает
(например, это не поддерживается пользовательским сервером, или это не работает, потому что существует промежуточный прокси),
В этом случае мы не можем постараться не загружать данные перед частью, которой мы интересуемся. Но затем, мы можем отключить часть, в которой мы нуждаемся байтами, или строками:
URL="http://datagov.ic.nhs.uk/presentation/2014_03_March/T201403PDPI+BNFT.CSV"
curl -s "$URL" | head -c 50500 | tail -c 500
2.79,0000030,201403,
Q44,RXA,Y00327,1108010F0AAABAB,Hypromellose_Eye Dps 0.5% ,0000001,00000000.81,00000000.76,0000010,201403,
Q44,RXA,Y00327,110801000BLAPA0,Blephasol_Lot ,0000001,00000007.53,00000006.97,0000100,201403,
Q44,RXA,Y00327,110801000BLAQA0,Blephaclean_Eye Lid Wipe ,0000001,00000010.68,00000009.89,0000040,201403,
Q44,RXA,Y00327,1201010F0BBAAAA,Locorten-Viof$
Все равно!
Получить строки, вместо символов, использования -n
вместо -c
.
Для строк 100 - 110 ("последние 10 строк строк до 110"):
URL="http://datagov.ic.nhs.uk/presentation/2014_03_March/T201403PDPI+BNFT.CSV"
curl -s "$URL" | head -n 110 | tail -n 10
Q44,RXA,Y00327,0206030Y0AAAAAA,Ivabradine_Tab 5mg ,0000001,00000020.09,00000018.68,0000028,201403,
Q44,RXA,Y00327,0208010W0AAAIAI,Tinzaparin Sod_Inj 20 000u/ml 0.7ml Pfs ,0000003,00000154.77,00000143.20,0000013,201403,
Q44,RXA,Y00327,0208010W0AAANAN,Tinzaparin Sod_Inj 10 000u/ml 2ml Vl ,0000001,00000021.13,00000019.65,0000002,201403,
Q44,RXA,Y00327,0208020V0AAAAAA,Warfarin Sod_Tab 1mg ,0000002,00000001.34,00000001.37,0000042,201403,
Q44,RXA,Y00327,0209000A0AAAJAJ,Aspirin_Tab 75mg ,0000001,00000000.12,00000000.22,0000004,201403,
Q44,RXA,Y00327,0211000P0AAACAC,Tranexamic Acid_Tab 500mg ,0000001,00000006.31,00000005.85,0000060,201403,
Q44,RXA,Y00327,0212000Y0AAADAD,Simvastatin_Tab 40mg ,0000001,00000000.17,00000000.27,0000004,201403,
Q44,RXA,Y00327,0301011R0AAAPAP,Salbutamol_Inha 100mcg (200 D) CFF ,0000037,00000058.50,00000054.54,0000039,201403,
Q44,RXA,Y00327,0301011R0BEAIAP,Ventolin_Evohaler 100mcg (200 D) ,0000014,00000021.00,00000019.59,0000014,201403,
Q44,RXA,Y00327,0301011V0BBAMAL,Bricanyl_Turbohaler 500mcg (100 D) ,0000001,00000006.92,00000006.41,0000001,201403,
Теперь, поскольку записи CSV являются строками, у нас есть чистый запуск и конец раздела.
Довольный Диапазон HTTP не поддерживает диапазоны строки использования; сервер HTTP должен был бы считать целый файл, включая часть перед диапазоном, для подсчета номеров строки.
РЕДАКТИРОВАНИЕ для любого читающего это после: Мои работы ответа, но продолжают идти, ответы ниже лучше.
Таким образом, при щелчке правой кнопкой по фактическим ссылкам для наборов данных, можно выбрать Copy link address
(в хроме я принимаю подобные опции в Firefox/других),
Самый легкий совет, который я могу дать взгляду наверху, немногие выравнивают, это:
Откройте терминал и сделайте каталог для Ваших файлов (я помещу его на Рабочий стол и назову его Файлами),
mkdir -p ~/Desktop/Files
Теперь, войдите в тот каталог..
cd ~/Desktop/Files
теперь, с помощью ссылки, которую Вы скопировали сверху (ctrlshiftV для вставки его в терминал) тип
wget http://datagov.ic.nhs.uk/presentation/2014_03_March/T201403PDPI+BNFT.CSV
(это - первая ссылка на странице для Вашей ссылки).
Теперь, проверить, что это - то, что Вы хотите просто, чтобы хит ctrlC остановил передачу файлов (wget ищет файл в том местоположении, URL, и загружает его. Это останавливает передачу). После того как это остановилось, используют Ваш любимый текстовый редактор для открытия его через
gedit T2014 ...
или можно считать его на командной строке с
cat T2014 ...
Если это - то, что Вы хотите, просто повторно выполняете команду wget и позволяете ей закончиться. В противном случае можно безопасно удалить T2014... файл.