Aqui está a parte do bash
script que faz a cpuid
descoberta no Linux (Ubuntu / Fedora):
/usr/bin/cpuid > id.txt
CPUID=id.txt
echo `grep "extended model" $CPUID` | sed 's/0x//' | awk ' { print $4 } ' > cpu.txt
a=`cat cpu.txt`
echo `grep "extended family" $CPUID`| sed 's/0x//' | awk ' { print $4 } ' > cpu.txt
a+=`cat cpu.txt`
Portanto, para o meu laptop, essa parte do script (mostrada aqui) fornece 60.
Agora, como fazer isso usando APENAS variáveis locais, sem ter o arquivo intermediário ( cpu.txt
) envolvido?
fonte
cat
primeira linha não deveria estar lá. Faz com que CPUID receba o conteúdo do executável binário em vez de sua saída.sed
como eu tenho 8 núcleos, meu pc emite:
tac inverte a ordem das linhas do cpuid para que eu possa usar ^ CPU como terminador de um registro de CPU, um modelo também extendido e uma família extendida ocorrem na ordem correta
fonte
Isso não otimiza seus comandos iniciais, mas o ponto e vírgula permite que você coloque dois comandos juntos para evitar a operação de concatenação inteiramente:
Ou, específico para sua situação:
Se você se preocupa com as novas linhas, deverá colocar aspas duplas antes da inicial
$(
e após o fechamento)
fonte
Aqui está uma maneira de fazê-lo
awk
(toda a saída, conforme feito pelo código em sua resposta).Quando você acaba reprocessando a mesma entrada repetidamente, geralmente indica que outra abordagem pode ser melhor.
awk
é perfeito para processar entrada de texto como esta.awk
programas são muito mais do que as coisas sejam feitas comsed
, mas eles são muito mais fáceis de ler e você pode adicionar instruções de impressão para eles para fazer a depuração muito mais fácil.Deixei minhas instruções de depuração em (comentadas). Você pode descomentá-los para ver como o script funciona.
Você precisa colocar o
awk
programa em algum lugar e o lugar mais fácil em um único caso de uso como esse é colocar tudo em uma única cadeia de caracteres entre aspas naawk
linha de comando.Dessa forma, você não precisa armazená-lo em um arquivo separado ou em um arquivo temporário; portanto, não há gerenciamento de arquivos envolvido e o script permanecerá por si próprio.
Este programa parece longo, mas são quase todos os comentários, instruções de depuração e espaço em branco.
fonte
Até agora, estou lendo todos os comentários e tentarei usá-los todos. Como escrevi para o NGRhodes: "infelizmente, não sou especialista em sed, awk e perl, mas tenho algum entendimento inicial.
Muito obrigado a todos que apresentaram / apresentaram esses excelentes exemplos. Espero sinceramente que mais pessoas leiam essas linhas e aprofundem suas habilidades de script!
Na verdade, fiz um coquetel do que todos vocês me sugeriram:
O resultado é: 40651 0004-0651-0000-0000-0000-0000 que é o que eu espero! :-)
fonte