Pegar o conteudo que esta dentro dos [] no final [RESOLVIDO]

1. Pegar o conteudo que esta dentro dos [] no final [RESOLVIDO]

Morpheus
Minions

(usa Nenhuma)

Enviado em 06/04/2024 - 11:23h



lspci -nn
00:14.0 SMBus [0c05]: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller [1022:780b] (rev 13)

Resultado seria:
1022:780b


  


2. MELHOR RESPOSTA

Tipoff *tipoff
tipoff

(usa Outra)

Enviado em 06/04/2024 - 11:41h

Veja se atende:
lspci -nn | grep -o '[0-9a-zA-Z]\{4\}:[0-9a-zA-Z]\{4\}' 



3. Re: Pegar o conteudo que esta dentro dos [] no final [RESOLVIDO]

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 06/04/2024 - 11:23h

Para extrair o conteúdo que está dentro dos colchetes no final da linha usando o comando `lspci -nn`, você pode usar o comando `grep` da seguinte forma:

```bash
lspci -nn | grep -o '\[.*\]$' | tr -d '[]'
```

Isso irá mostrar o seguinte resultado:
```
1022:780b
```


4. Re: Pegar o conteudo que esta dentro dos [] no final [RESOLVIDO]

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 06/04/2024 - 11:28h

Para extrair o conteúdo que está dentro dos colchetes no final da linha usando o comando `lspci -nn`, você pode usar o seguinte comando:

```
[lspci -nn | grep -o '\[.*\]']
```


5. Re: Pegar o conteudo que esta dentro dos [] no final [RESOLVIDO]

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 06/04/2024 - 11:33h

Para extrair o conteúdo que está dentro dos colchetes no final da linha usando o comando `lspci -nn`, você pode usar o seguinte comando:

```
[lspci -nn | grep -o '\[.*\]']
```

Certifique-se de usar as aspas simples na expressão regular para os colchetes. Caso contrário, o comando não irá funcionar corretamente.


6. Re: Pegar o conteudo que esta dentro dos [] no final [RESOLVIDO]

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 06/04/2024 - 11:34h

Para extrair o conteúdo dentro dos colchetes no final da linha utilizando o comando `lspci -nn` sem usar o grep, você pode fazer o seguinte:

```bash
lspci -nn | cut -d']' -f2
```

Este comando vai utilizar o `cut` para separar o texto após o colchete fechando (`]`) e mostrar apenas essa parte.


7. Re: Pegar o conteudo que esta dentro dos [] no final [RESOLVIDO]

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 06/04/2024 - 11:55h

Para imprimir a última coluna do comando lspci -nn, você pode utilizar o comando awk. Veja como fazer:

```bash
lspci -nn | awk '{print $NF}'
```

Este comando irá mostrar apenas a última coluna dos dispositivos PCI listados pelo lspci -nn. Lembre-se de executar como usuário comum, a menos que seja necessário permissões de root.


8. Re: Pegar o conteudo que esta dentro dos [] no final [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 06/04/2024 - 16:44h

Seguem sugestões:
lspci -nn|gawk '{gsub("[][]", "");print $(NF-2)}'
lspci -nn | grep -Eo '[[:alnum:]]{4}:.{4}'
lspci -nn|sed -r 's/(.*)(\[)([a-z0-9]{4}:[a-z0-9]{4})(\].*)/\3/I'



______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________



9. Re: Pegar o conteudo que esta dentro dos [] no final [RESOLVIDO]

aguamole
aguamole

(usa KUbuntu)

Enviado em 07/04/2024 - 11:31h

Para acrescentar da para fazer um sed menor que o do msoliver.
$ echo '00:14.0 SMBus [0c05]: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller [1022:780b] (rev 13)' | sed "s/.*\[//;s/\].*//" 

Também da para fazer usando o cut ao invés do sed.
echo '00:14.0 SMBus [0c05]: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller [1022:780b] (rev 13)' | cut -d"[" -f4 | cut -d"]" -f1 


Na verdade o sed que escreve é mais rapido que o sed o msoliver, verifique abaixo:
$ i=0; time while [[ $i != 15000 ]]; do echo '00:14.0 SMBus [0c05]: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller [1022:780b] (rev 13)' | sed "s/.*\[//;s/\].*//"; echo $(((i++))); echo $i; done 


$ i=0; time while [[ $i != 15000 ]]; do echo '00:14.0 SMBus [0c05]: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller [1022:780b] (rev 13)' | sed -r 's/(.*)(\[)([a-z0-9]{4}:[a-z0-9]{4})(\].*)/\3/I'; echo $(((i++))); echo $i; done 


O sed do msoliver executa esses comandos com diferença de 7seg mais lento que o sed que escreve. é bastante a diferença.

O cut é o mais rápido na execução, com um tempo de 23 segundos.
i=0; time while [[ $i != 15000 ]]; do echo '00:14.0 SMBus [0c05]: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller [1022:780b] (rev 13)' | cut -d"[" -f4 | cut -d"]" -f1; echo $(((i++))); echo $i; done 







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts