Открыть и извлечь информацию из большого текстового файла (Geonames) - PullRequest
0 голосов
/ 21 мая 2018

Я хочу составить список всех крупных городов и городов в Великобритании.

Geonames кажется хорошим местом для начала, хотя мне нужно использовать его локально (в отличие от API), так как я буду работать в автономном режиме при использовании информации.

Из-за большогоразмер файла geonames "allcountries.txt", который не будет открыт в Блокноте, Блокноте ++ и Sublime.Я пытался открыть в Excel (включая функцию моделирования данных), но файл содержит более миллиона строк, поэтому это тоже не сработает.

Можно ли открыть этот файл, распаковать только для Великобританиигорода, а также манипулировать в Excel и / или каком-либо другом программном обеспечении?Я только после названия места, лат, длинный, название страны, континент

1 Ответ

0 голосов
/ 14 мая 2019

@ предложение Дедека (в комментариях) использовать GB.txt определенно является лучшим ответом для вашего конкретного случая.

Я добавил еще один ответ, потому что эта техника гораздо болеегибкий и позволит вам фильтровать по стране или любой другой столбец .То есть вы можете адаптировать это решение для фильтрации по языку, региону в Великобритании, населению и т. д. или применить его, например, к файлу towns5000.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».

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

...