Печатать порты с использованием приложения

Я хочу напечатать 2 поля вместе, все открытые порты и приложение, используя это. Это моя команда, но она только печатает номера портов и все еще пропускает поле программы:

netstat -lnt -u -p | awk '{print $4}' | sed 's/.*://' | sort -n | uniq 

Как я могу изменить это для печати, также имя программы, как в «PID / Program name», вернет «java»,

Образец « netstat -lnt -u -p » выглядит так:

tcp, 0, 0, 10.194.194.21:36195, 0.0.0.0:*, LISTEN, 2969 / java

И я хочу видеть только номер порта и имя программы:

  36195 java 

  • Arch Linux - Cronie не работает, а nestat не выводит журналы?
  • Получить адрес маршрутизатора любого интерфейса
  • Почему Tomcat не появляется, когда я выводил grep netstat на 8080?
  • Как определить и убить услуги прослушивания git здесь?
  • Регистрация исходящих соединений по мере их возникновения
  • Как отобразить UDP-соединение?
  • Поиск PID процесса с использованием определенного порта?
  • Команда netstat больше не работает на новом выделенном сервере
  • 2 Solutions collect form web for “Печатать порты с использованием приложения”

    Сокращенное решение:

     netstat -lpunt | awk -F' +|:+|/' '$5{print $5,$10}' | sort -n 
    • -F' +|:+|/' – разделитель полей (пробел (ы), двоеточие (ы) или косая черта)

    • $5 – номер порта

    • $10 – название программы

    Вам нужно распечатать 6-е поле, а также 4-е

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

     netstat -lnt -u -p | awk '{print $4,$6}' | sed 's/.*://' | sort -n | uniq 

    Вот как вы можете получить единственный порт и имя_программы (нет необходимости в дополнительном sed и команде sort можно uniqe с опцией -u ):

     netstat -lnt -u -p | awk -F"[,:/]" '{print $5,$NF}'| sort -un 36195 java 
    Linux и Unix - лучшая ОС в мире.