удалить / 32 из строки ip - PullRequest
3 голосов
/ 14 марта 2020

Я пытаюсь удалить / 32 из списка IP-адресов. Список экспортируется с 14 столбцами. IP-адрес указан в столбце 9 и 11

. Я попытался с помощью sed: sed 's_/32__' filename, но это оставляет большое количество xxxx / 32 строк. как; 172.16.16.160/32; 22; TCP

Итак, я думал об использовании awk для выбора столбца 9 и 11 и передачи его по конвейеру, но это приводит к путанице и ошибкам.

Просто вырезать все за / не будет работать, так как в списке есть также URL-адреса.

Любая помощь приветствуется.

(анонимная) выборка данных ниже, где sed уже выполнялся на:

timestamp (UTC);ID;Threat Level;Category;Exporter IP address;Observation domain ID (ODID);Source MAC;Manufacturer;Source IP;Source Port;Destination IP;Destination Port;Protocol;Description
2020-03-14 13:54:10;20810;5;Ingress Traffic;::ffff:ac8:c8d0/128;101;00:10:8c:f0:cx:c0;Intel;8.8.8.8/32;49420;10.0.0.1/32;22;TCP;Ingress connection to common SSH port:  100% CertaintyHigh Severity Category: SSH Description: Shh

Ответы [ 3 ]

2 голосов
/ 14 марта 2020

Подстановка, которую вы используете, заменяет только первое вхождение. У вас есть более одного вхождения в каждой строке, поэтому вам придется выполнить другую подстановку, аналогичную предыдущей, или, проще, выполнить глобальную подстановку:

sed 's_/32__g' filename

В любом случае учтите, что эти подстановки действовать на весь файл, а не только на содержимое столбцов 9 и 11.

1 голос
/ 14 марта 2020

Вы можете выполнить sh это только с awk:

awk 'BEGIN{FS=OFS=";"} {sub(/\/32/, "", $9);sub(/\/32/, "", $11);}1' file

См. онлайн-демонстрацию

Подробности

  • BEGIN{FS=OFS=";"} - устанавливает разделитель поля ввода и вывода на ;
  • sub(/\/32/,"", $9);sub(/\/32/,"", $11); - удаляет первые экземпляры /32 из поля 9 и 11
  • 1 - запускает действие печати по умолчанию.
0 голосов
/ 15 марта 2020

Вы можете попробовать:

gawk '{gsub("/32",""); print}' file

gsub удаляет все вхождения / 32 во всей входной записи ($ 0) и выводит ее на печать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...