Как выполнить поиск данных с пробелами и игнорированием блока?

Tar также сохраняет имя пользователя и группы в файле. Вы можете убедиться в этом, взглянув на сам tar-файл с помощью таких инструментов, как hexdump. Причина в том, что одно и то же имя может использоваться в разных системах, но с разными номерами.

Во втором случае исходная система не знает имени пользователя 33, поэтому она не может предоставить имя, только номер. Извлекающий tar использует этот номер, и поскольку система знает этот номер, она отображает имя пользователя для этого номера.

См. также

--numeric-owner
Always use numbers for user/group names.

1
29.05.2021, 03:21
2 ответа

Хоть и тупо, но можно попробовать:

$ netstat -natp 2> /dev/null | awk 'NR==2 {printf("%s\t%s %s\t%s %s\t%s %s\n",$1,$4,$5,$6,$7,$9,$10)}
                                    NR>=3 {OFS="\t";print($1,$4,$5,$7)}'

РЕДАКТИРОВАТЬ
... и, для завершения, если вам нужно, чтобы столбец порта был отделен от его IP-направления в вашем окончательном выводе, вы можете ввести более мелкое форматирование в awk, например:

  $ netstat -natp 2>/dev/null | awk '
      NR==2 {printf("%s\t%8s %s\tPort\t%8s %s\tPort\t%s\n",$1,$4,$5,$6,$7,$9)} 
      NR>=3 {$8=$7;
             idx=match($5,":[^:]+$");
             $7=substr($5,idx+1);
             $6=substr($5,1,idx-1);
             idx=match($4,":[^:]+$");
             $5=substr($4,idx+1);
             $4=substr($4,1,idx-1);
             printf("%s\t%16s\t%s\t%16s\t%s\t%s\n",$1,$4,$5,$6,$7,$8)}
     '
  Proto      Local Address        Port     Foreign Address        Port    PID/Program
  tcp              0.0.0.0        22               0.0.0.0        *       -
  tcp            127.0.0.1        631              0.0.0.0        *       -
  tcp            127.0.0.1        25               0.0.0.0        *       -
  tcp              0.0.0.0        445              0.0.0.0        *       -
  tcp            127.0.0.1        12150            0.0.0.0        *       -
  tcp              0.0.0.0        139              0.0.0.0        *       -
  tcp            127.0.0.1        37580          127.0.0.1        12150   2962/firefox
  tcp            127.0.0.1        12150          127.0.0.1        40684   -
  [...]
  tcp            127.0.0.1        12150           127.0.0.1       47646   -
  tcp            127.0.0.1        12150           127.0.0.1       48982   -
  tcp            127.0.0.1        12150           127.0.0.1       1414   -
  tcp6                  ::        22                    ::        *       -
  tcp6                 ::1        631                   ::        *       -     
  tcp6                  ::        445                   ::        *       -     
  tcp6                  ::        139                   ::        *       -

Протестировано с помощью Gawk (GNU Awk )v5.1.0, где приведенный выше образец вывода взят из случайного ящика, лежащего рядом со мной.

Отличия от моего предыдущего ответа:

  • для полей 4 и 5 каждой записи проверьте позицию(idx)последнего символа :в строке. Что бы ни последовало за этим, это порт. Начало строки — это IP. Это относится как к IP-строкам IPv4, так и к IPv6. Это полезно для разделения IP-адреса и номера порта, например, в 127.0.0.1:12345, а также в ::1:432.
  • потеряйте OFS="\t", чтобы указать разделитель полей вывода во втором блоке awkи добавьте целочисленную ширину в соответствующих местах между %и sв строках форматирования printfв оба блока awk.
1
28.07.2021, 11:28

Не идеальная картинка, но для начала:

perl -ae 'printf("%-6s%16s%7s%16s%7s %7s %s\n", $F[0], $F[3] =~ /(.*):(.*)/, 
$F[4] =~ /(.*):(.*)/, $F[6] =~ /(\d*)\/?(.*)/) if $. > 2'

Out (Заголовок добавлен постфактум):

Proto    Local-Address   Port  Remote-Address   Port     PID  Program-name
tcp    192.168.122.100     53         0.0.0.0      *          -
tcp           10.0.0.8     53         0.0.0.0      *          -
tcp          127.0.0.1   9321       127.0.0.1  45396          -
tcp           10.0.0.8  45454  123.123.123.25    443     484  firefox
tcp          127.0.0.1  36363       127.0.0.1   3639   23018  weechat
tcp           10.0.0.8  23232  123.232.123.25    443     484  firefox
tcp           10.0.0.8  13131   22.123.123.33   6667   23415  irssi
tcp           10.0.0.8  45586    52.42.50.123    443   20538  firefox
tcp6                ::     80              ::      *          -
tcp6                ::     22              ::      *          -
tcp6               ::1    631              ::      *          -
tcp6                ::     25              ::      *          -
tcp6                ::    443              ::      *          -
tcp6         127.0.0.1     80       127.0.0.1  46922          -
0
28.07.2021, 11:28

Теги

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