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