импортировать IP-адрес в octave

#import #ip-address #octave #type-conversion

#импортировать #ip-адрес #octave #тип-преобразование

Вопрос:

У меня есть набор данных, состоящий из IP-адресов, переданных пакетов и т.д. Octave преобразует IP-адреса в значения с плавающей точкой. Как мне импортировать IP-адреса как есть и какой тип данных следует использовать (строка?)?

Ответ №1:

Как вы импортируете их в octave? GNU Octave имеет множество функций для загрузки / сохранения данных. Это зависит от того, как ваши IP-адреса (IPv4 или IPv6?) хранятся в вашем файле, какая функция является самой простой / наилучшей для вас.

Например, если у вас есть файл под названием «ips.txt «.

 192.168.10.4
8.8.8.8
14.32.244.8
  

Вы могли бы использовать это для получения ячейки:

 octave:1> f = fopen("ips.txt", "r");
octave:2> l = textscan(f, "%s");
octave:3> fclose(f);
octave:4> 
octave:4> l{1}
ans = 
{
  [1,1] = 192.168.10.4
  [2,1] = 8.8.8.8
  [3,1] = 14.32.244.8
}
octave:5>
  

Но, возможно, char (fread (..)) или fgetl могут быть лучше для вас, в зависимости от того, что вы хотите сделать позже с импортированными IP-адресами…

дополнение: Поскольку вы отметили, что у вас есть IP-адреса, находящиеся внутри списка с плавающей точкой, а не фиксированной схемы (фиксированной схемой было бы, например: «Требуемые IP-адреса находятся в начале строки, 4.th столбец или что-то подобное, что может быть обработано с помощью awk) Я также добавляю возможность с помощью регулярного выражения:

Я создал этот файл ips.txt:

 192.168.10.4 some text 3.14 8.8.8.8
other 123.44 14.32.244.8
4.667.2 12.943 127.0.0.1 hello world
  

И загрузите его с помощью этого скрипта, используя regexp

 f = fopen("ips.txt", "r");
x = char(fread(f));
fclose(f);

[S, E, TE, M, T, NM, SP] = regexp (x', '[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}');
  

что дает вам для M:

 M = 
{
  [1,1] = 192.168.10.4
  [1,2] = 8.8.8.8
  [1,3] = 14.32.244.8
  [1,4] = 127.0.0.1
}
  

— Энди

Комментарии:

1. Моя строка состоит из IP-адресов, а также числовых данных, скажем, в формате: IPAddress, IPAddress, int data1,…. int datan, float data1,…float datan. Что делать в этом случае?

2. Адреса IPv4? И они смешиваются без системы? Я не вижу фиксированной схемы в вашем комментарии. В этом случае вы могли бы использовать регулярное выражение для извлечения строк, состоящих из (от одной до трех цифр) (точка) … Я думаю, было бы хорошо, если бы вы добавили фрагмент (возможно, первые 5 строк?) вашего файла.

3. Существует фиксированная схема для IP-адресов. Первые два столбца — это IP-адреса, которые мне нужно преобразовать в строку. Вот несколько примеров строк: 1) 197.148.2.59 214.94.210.8 6 1 3552 4899 1 48 1 1141395274.903832000 1141395274.903832000 2) 161.194.73.174 199.14.135.17 17 1 1785 53 6 458 1 1141394547.311557000 1141395278.368583000 3) 211.143.181.211 140.223.154.73 6 1 443 2654 2 84 1 1141395283.726913000 1141395283.927282000 4) 94.82.131.157 165.28.40.41 6 1 1695 3128 3 462 1 1141394439.018936000 1141394440.402323000 5) 214.94.198.179 207.100.116.38 6 1 58702 25 4 240 1 1141394590.835600000 1141394632.835990000