devido a espaços entre uma saída alterada do Word Awk

0

Devido a espaços entre uma saída alterada do Word Awk

por exemplo: "Endereço local" awk considere local e endereço separadamente

# 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

A saída deve ser: $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
    
por Daya 17.04.2015 / 13:29

2 respostas

2

Do manual do awk:

The awk utility shall interpret each input record as a sequence of fields where, by default, a field is a string of non-blank non-newline characters. This default blank and newline field delimiter can be changed by using the FS built-in variable or the −F sepstring option.

Você pode alterar o comportamento usando a opção "-F" ou definindo a opção FS no seu código awk:

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

No que diz respeito a como o netstat faz sua saída, não consigo responder. :)

    
por 17.04.2015 / 13:54
1

tente

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 ;}'

onde

  • primeira linha ignorada
  • segunda linha, eu escolho o campo que você precisa (e ajuste o tamanho da coluna)
  • todas as outras linhas, campo de impressão com ajuste
  • Eu dobrei a linha para ter uma visão melhor, isso pode ser alinhado, é claro.
por 17.04.2015 / 14:26

Tags