Из-за пробелов между одним словом Awk изменился вывод

Из-за пробелов между одним словом Awk изменился вывод

например: «Локальный адрес» awk считают локальным и адрес отдельно

 # netstat -antulp | awk 'NR>1' Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1115/rpcbind tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1397/sshd tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1271/cupsd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1473/master tcp 0 0 0.0.0.0:55547 0.0.0.0:* LISTEN 1133/rpc.statd 

Результат: $4 $5 $6

 Local Address Foreign Address PID/Program name 0.0.0.0:111 0.0.0.0:* 1115/rpcbind 0.0.0.0:22 0.0.0.0:* 1397/sshd 127.0.0.1:631 0.0.0.0:* 1271/cupsd 127.0.0.1:25 0.0.0.0:* 1473/master 0.0.0.0:55547 0.0.0.0:* 1133/rpc.statd 

  • awk, чтобы вырезать часть поля и все еще печатать всю строку
  • linux при чтении для переключения столбцов, если столбец 3 меньше столбца 2
  • разбор файла из ls -laLR
  • awk: печатать строки после матча до конца файла
  • Добавить порядковый номер за словом данных
  • UNIX вставляют столбцы и вставляют нули для всех отсутствующих значений
  • Объединение двух файлов, по одному столбцу за раз
  • заменить столбец csv-файла на столбец из другого файла
  • 2 Solutions collect form web for “Из-за пробелов между одним словом Awk изменился вывод”

    Из руководства awk:

    Утилита awk должна интерпретировать каждую входную запись как последовательность полей, где по умолчанию поле представляет собой строку непустых символов без символа новой строки . Этот разделитель полей пустой и новой строки по умолчанию можно изменить с помощью встроенной переменной FS или опции -F sepstring.

    Вы можете изменить поведение, используя параметр «-F», или установив параметр FS в свой awk-код:

     awk 'BEGIN{FS="\t"} {print $1 $2 $3}' 

    Насколько netstat делает вывод, я не могу ответить. 🙂

    пытаться

     netstat -antulp |\ awk 'NR == 1 { skip } NR == 2 { printf "%s %-19s\t%s %-18s\t%s %s\n",$4,$5,$6,$7,$9,$10} NR > 2 { printf "%-24ss\t%-24ss\t%s\n",$4,$5,$6 ;}' 

    где

    • первая строка пропущена
    • вторая строка, я выбираю поле, которое вам нужно (и отрегулируйте размер столбца)
    • все остальные строки, поле печати с настройкой
    • Я сбрасываю линию для лучшего обзора, это может быть одно выровнено, конечно.
    Linux и Unix - лучшая ОС в мире.