Aquí está la parte del bash
script que hace cpuid
descubrimiento en 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`
Entonces, para mi computadora portátil, esta parte del script (que se muestra aquí) da 60.
Ahora, ¿cómo hacer esto usando SOLO variables locales, sin cpu.txt
involucrar el archivo intermedio ( )?
fuente
cat
en la primera línea no debería estar allí. Hace que a CPUID se le asignen los contenidos del ejecutable binario en lugar de su salida.sed
Como tengo 8 núcleos, mi PC emite:
tac invierte el orden de las líneas de cpuid para que pueda usar ^ CPU como terminador de un registro de CPU, un modelo también extendido y una familia extendida luego ocurren en el orden correcto
fuente
Esto no optimiza sus comandos iniciales, pero el punto y coma le permite poner 2 comandos juntos para evitar la operación de concatenación por completo:
O, específico a su situación:
Si le interesan las nuevas líneas, querrá poner comillas dobles antes de la inicial
$(
y después del cierre.)
fuente
Aquí hay una manera de hacerlo
awk
(toda la salida como lo hace el código en su respuesta).Cuando termina reprocesando la misma entrada una y otra vez, generalmente indica que otro enfoque podría ser mejor.
awk
es perfecto para procesar entradas de texto como esta.awk
los programas son mucho más tiempo que las cosas se hagan consed
, pero son mucho más fáciles de leer y se puede agregar instrucciones de impresión para ellos para hacer la depuración mucho más fácil.Dejé mis declaraciones de depuración en (comentado). Puede descomentarlos para ver cómo funciona el guión.
Debe colocar el
awk
programa en algún lugar y el lugar más fácil en un caso de uso único como este es colocar todo en una sola cadena entre comillas en laawk
línea de comando.De esta manera, no tiene que almacenarlo en un archivo separado o en un archivo temporal, por lo que no hay gestión de archivos involucrada y el script se mantendrá por sí solo.
Este programa parece largo, pero es casi todos los comentarios, declaraciones de depuración y espacios en blanco.
fuente
Hasta ahora, estoy leyendo todos los comentarios e intentaré usarlos todos. Como le escribí a NGRhodes: "desafortunadamente, no soy experto en sed, awk y perl, pero sí tengo cierta comprensión inicial.
Muchas gracias a todos los que hicieron / presentaron estos excelentes ejemplos. ¡Espero sinceramente que mucha más gente lea estas líneas y profundice sus habilidades de secuencias de comandos!
En realidad, hice un cóctel de lo que todos ustedes me sugirieron:
El resultado es: 40651 0004-0651-0000-0000-0000-0000 que es lo que espero! :-)
fuente