Получить местоположение города по IP-адресам внутри файла

После просмотра МНОГО веб-страниц, многие из которых давали некоторые подсказки, которые, казалось, не работали, я нашел подсказку (дополнительный текст вокруг вставки ), которая привела меня к причине и решению проблемы. проблема.

Похоже, что vim встроил в него несколько «фальшивых» записей termcap, которые он использует, когда распознает определенные терминалы (и иногда ошибается, хотя в данном случае это не так ).

Настройки Termcap в vim многочисленны, поэтому они НЕ отображаются в обычном списке настроек «:установить все». Чтобы их увидеть нужно использовать ":set termcap". Конкретная «нестандартная» -настройка termcap — «t _BE» (см. vim «:help t _BE» ). Встроенный -в справке «xterm -в квадратных скобках -вставка» объясняет эту внутреннюю настройку термина -на -vim.

В основном, если этот параметр определен (в данном случае Vim, а не termcap/terminfo ), тогда vim отправит его в xterm при запуске, что указывает xterm добавлять специальные коды вокруг любого текста, который вставляет пользователь. из внешнего источника. Когда vim их видит, он автоматически переходит не только в режим вставки -, но также устанавливает режим «вставки -», чтобы не форматировать текст.

Более поздний режим (вставки -)я считаю ОЧЕНЬ полезным! Первое доставляло мне все неприятности.

Решение грубой силы отключает вставку в квадратных скобках -, добавляя ее в «.vimrc»

:set t_BE=

Альтернативное решение....

Вместо полного отключения вставки -в квадратных скобках остановите выполнение действий vim, когда он увидит начальную последовательность терминальной вставки (с помощью мыши )в командном или обычном -режиме.

:nmap <PasteStart>  <NOP>
:nmap <PasteEnd>    <NOP>
:cmap <PasteStart>  <NOP>
:cmap <PasteEnd>    <NOP>

Использование этого означает, что если вы вставляете текст в режиме вставки -, vim не будет пытаться форматировать (отступ )текст, который, скорее всего, уже имеет отступ.

Это не означает, что мне больше не нужно переключать режим вставки -, так как я также использую переключатель режима вставки -(, сопоставленный с F2 ), чтобы отключить «showbreak» и «listchars» (отображение перенесенных строк, табуляции, без -пробелов и дополнительных пробелов в конце строк ). Мне все равно нужно было бы перевести vim в этот режим, когда я хочу сделать выбор мыши для вставки в другое место.

Комментарии и предложения по решениям приветствуются.

4
08.08.2019, 19:12
2 ответа

Использование контура while read:

while read -r ip; do curl --fail "ipinfo.io/${ip}/city" || break; done<ip_list.txt

Это прочитает файл ip_list.txtи установит для каждой строки переменную цикла ip, а затем свернет ее.

По предложению Стефана я добавил флаг --failв curl, чтобы он автоматически завершал работу при ошибке сервера, и флаг || break, чтобы прерывать цикл. ipinfo.io разрешает 50 тысяч запросов API в месяц для бесплатных учетных записей, поэтому в зависимости от того, сколько у вас IP-адресов и как часто вы планируете использовать это, это может быть проблемой для вас.

3
27.01.2020, 20:57

Для поиска географического IP-адреса (es )я обычно предпочитаю использовать базу данных MaxMind geoIP. Он быстрее, так как не имеет подключения к Интернету для каждого IP-адреса, так как использует локальную базу данных, и не имеет ограничений на количество звонков.

Если в Debian, в качестве предварительного -необходимо установить пакеты:

sudo apt-get install geoip-bin geoip-database-extra

Затем запустите скрипт:

 while read -r ip; do geoiplookup $ip | awk -F, ' /City/  { print $5 } ' \
 ; done < ip_list.txt > cities.txt
2
27.01.2020, 20:57

Теги

Похожие вопросы