Como remover o padrão da linha, mas retornar o que resta?

1

Se eu executar ip addr sho | grep 9000 , ele retornará a interface da qual preciso de estatísticas rápidas para:

eth3: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 9000 qdisc mq state UP qlen 1000

No entanto, gostaria de aprender como fazer com que este comando grep retorne uma linha mais curta sem os detalhes desnecessários, como:

eth3: mtu 9000 state UP

Isso pode ser feito com certos parâmetros aplicados ao comando grep?

    
por GreNIX 17.10.2018 / 21:39

1 resposta

1

awk solution. Procure uma linha com eth, seguida por um número, seguido por a: e, em seguida, imprima as colunas relevantes.

$ ip a s | awk '/eth[0-9]*:/{print $2,$4,$5,$8,$9}'
eth0: mtu 1460 state UP
$

sed solution, embora alguém aponte que há uma maneira mais doce e mais curta.

$ ip a s | sed -n 's/^.*\(eth[0-9]*:\).*\(mtu [0-9]*\).*\(state [A-Z]*\).*/  /p'
eth0: mtu 1460 state UP
$

grep + cut solution.

$ ip a s | grep -E 'eth[0-9]+:' | cut -f2,4,5,8,9 -d" "
eth0: mtu 1460 state UP
$
    
por 17.10.2018 / 23:27