Открыть и извлечь информацию из большого текстового файла (Geonames)
Я хочу составить список всех крупных городов и городов Великобритании.
Geonames кажется хорошим местом для начала, хотя мне нужно использовать его локально (в отличие от API), так как я буду работать в автономном режиме при использовании информации.
Из-за большого размера файла geonames "allcountries.txt" он не открывается в Notepad, Notepad++ и Sublime. Я попытался открыть в Excel (включая функцию моделирования данных), но файл содержит более миллиона строк, поэтому это тоже не сработает.
Можно ли открыть этот файл, извлечь города только для Великобритании и манипулировать в Excel и / или каком-либо другом программном обеспечении? Я только после названия места, лат, длинный, название страны, континент
0 ответов
Предложение @dedek (в комментариях) использовать GB.txt, безусловно, лучший ответ для вашего конкретного случая.
Я добавил еще один ответ, потому что этот метод гораздо более гибкий и позволяет фильтровать по стране или любому другому столбцу. т.е. вы можете адаптировать это решение для фильтрации по языку, региону в Великобритании, населению и т. д. или применить его, например, к файлу city5000.txt.
Решение:
Использовать grep
чтобы найти данные, соответствующие определенному шаблону. По сути, приведенная ниже команда говорит: найдите все строки, в которых восьмой столбец равен точно "ГБ".
grep -P "[^\t]*\t[^\t]*\t[^\t]*\t[^\t]*\t[^\t]*\t[^\t]*\t[^\t]*\t[^\t]*\tGB\t" allCountries.txt > UK.txt
(grep
входит в стандартную комплектацию большинства систем Unix, но определенно существуют инструменты, которые могут сделать это и в Windows.)
Детали:
- grep: выполняемая команда.
- \ t: сокращение для символа TAB.
- -P: Говорит
grep
использовать регулярное выражение в стиле Perl (grep может не распознавать\t
как символ TAB в противном случае). (Это может немного отличаться, если вы используете другую версиюgrep
.) - [^ \ t]*: ноль или более символов без табуляции, т. е. необязательное значение столбца.
- > UK.txt: записывает вывод команды в файл с именем "UK.txt".
Опять же, вы можете адаптировать этот пример для фильтрации по любому столбцу в любом файле.