Como o argumento f funciona neste exemplo do comando cut?

0

Estou estudando para o exame LPIC-1 e estou entendendo o seguinte exemplo do corte de comando:

ifconfig enp3s0f2 produz o seguinte resultado:

enp3s0f2: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 00:90:f5:e5:e4:7c  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Em seguida, executo o comando ifconfig enp3s0f2 | grep ether | cut -d " " -f 10 , que exibe essa saída, pois quero isolar o endereço MAC: 00:90:f5:e5:e4:7c

No entanto, eu apenas brinquei com o parâmetro -f , que tem 10 como valor. Eu não entendo porque é 10 e não outro número. Eu olhei várias páginas com exemplos de como usar o comando cut e os diferentes argumentos, mas neste exemplo, não faz sentido para mim.

Como isolar este endereço MAC, deve ser o valor 10 a ser atribuído a -f?

    
por Sib 05.09.2018 / 12:14

2 respostas

4

Isto é devido ao delimitador que usamos, temos 8 espaços antes de ether

Podemos verificar usando o código abaixo.

 ifconfig enp3s0f2 | grep ether | sed 's/ether.*//' |grep -o ' ' | wc -l 

 8

Assim, o 9º campo é ether e o 10º campo é 00:90:f5:e5:e4:7c

    
por 05.09.2018 / 12:23
1

De man cut :

   -d, --delimiter=DELIM
          use DELIM instead of TAB for field delimiter

   -f, --fields=LIST
          select only these fields;  also print any line that contains no delimiter character, unless the -s option is specified

Então você está dividindo a saída por cada caractere delimitador, no seu caso, um espaço. Isso produz uma matriz de campos. A opção -f diz ao cut para retornar apenas o 10º campo.

    
por 05.09.2018 / 12:21

Tags