Диапазон портов grep regex от netstat

В моем выходе netstat я хочу извлечь диапазон портов между 32000-64000 . Я пробовал egrep "^[3,4,5,6]" но мне нужно начать с 32000 . Должен ли я использовать awk или какой-то скрипт?

 Linux# netstat -nau Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State udp 0 0 10.0.0.20:55238 0.0.0.0:* udp 0 0 10.0.0.20:55240 0.0.0.0:* udp 0 0 10.0.0.20:31242 0.0.0.0:* udp 0 0 10.0.0.20:55244 0.0.0.0:* udp 0 0 10.0.0.20:32246 0.0.0.0:* udp 0 0 10.0.0.20:55248 0.0.0.0:* udp 0 0 10.0.0.20:12250 0.0.0.0:* udp 0 0 10.0.0.20:19252 0.0.0.0:* 

2 Solutions collect form web for “Диапазон портов grep regex от netstat”

Решение awk :

 netstat -nau | awk -F'[[:space:]]+|:' 'NR>2 && $5>=32000 && $5<=64000' 

Результат в вашем случае будет таким:

 udp 0 0 10.0.0.20:55238 0.0.0.0:* udp 0 0 10.0.0.20:55240 0.0.0.0:* udp 0 0 10.0.0.20:55244 0.0.0.0:* udp 0 0 10.0.0.20:32246 0.0.0.0:* udp 0 0 10.0.0.20:55248 0.0.0.0:* 

  • -F'[[:space:]]+|:' – разделитель полей

  • NR>2 && $5>=32000 && $5<=64000 – проверяет, находится ли номер порта в необходимом диапазоне


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

 netstat -nau | egrep ':(3[2-9]|[45][0-9])[0-9]{3}|6[0-3][0-9]{3}|64000' 
  • (3[2-9]|[45][0-9])[0-9]{3} – будет охватывать номера от 32000 до 59999

  • 6[0-3][0-9]{3}|64000 – будет охватывать номера от 60000 до 64000

Поскольку netstat устарел, почему бы не попробовать его преемника, ss .

 ss -nau '( sport >= 32000 and sport <= 64000 )' 
  • Сравнить awk vs. grep
  • Извлеките две строки после строки с определенным значением
  • Использование grep / awk / sed для сортировки и объединения двух файлов
  • grep путается именами файлов с тире
  • Строки, не выводящие текст, найденный с помощью grep
  • SED - поиск и замена специальными символами (#,,%)
  • Как grep текст рекурсивно на BusyBox 1.0?
  • grep: регулярное выражение только для совпадения между скобками
  • Как использовать grep / ack с файлами в произвольной кодировке?
  • Сопоставьте все после обратной косой черты и перед пробелом
  • Греп: как добавить условие «ИЛИ»?
  • Linux и Unix - лучшая ОС в мире.