Открыть и извлечь информацию из большого текстового файла (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".

Опять же, вы можете адаптировать этот пример для фильтрации по любому столбцу в любом файле.

Другие вопросы по тегам