Тонкий подготовленный LV ведет себя по-разному на хосте и виртуальной машине

AWK, объединенный с RegExp, очень подходит для обработки частей линий.

Основная идея однострочного нижнего уровня состоит в том, чтобы прокрутить линию и проверить наличие четырех цифр и точек, повторяется максимум 4 раза; в то же время мы можем проверить цифру, повторяющуюся от 2 до 4 раз для номера порта

awk '{for(i=1;i<=NF;i++) { if ($i~/[[:digit:]\.]{4}/) printf $i; if ( $i~/[[:digit:]]{2,4}/) printf ":"$i  }}'

Пример прогона

$ echo "This sentence contains an ip number 1.2.3.4 and port number 50, i want to print the IP address only." |  awk '{for(i=1;i<=NF;i++) { if ($i~/[[:digit:]\.]{4}/) printf $i; if ( $i~/[[:digit:]]{2,4}/) printf ":"$i  }}'

1.2.3.4:50,

Ваше предложение содержит 50 и вместе без разделения, поэтому напечатаны вместе, но с gsub(/[[:punct:]]/,""), которые могут быть удалены при желании.

0
задан 4 August 2017 в 13:11

0 ответов

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

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