É porque a substituição do comando 'backquote' sem aspas removeu um espaço extra entre os caracteres model name
e :
. Consulte as saídas sem o grep
para ver a diferença para você mesmo
echo 'cat /proc/cpuinfo | grep 'model name' | uniq'
model name : Intel(R) Core(TM) i7-5600U CPU @ 2.60GHz
e com
cat /proc/cpuinfo | grep 'model name' | uniq
model name : Intel(R) Core(TM) i7-5600U CPU @ 2.60GHz
# ^^ - 2 spaces rather than one
Como resultado, o cut
vê campos diferentes do número 3
em diante nos dois casos. Isso pode ser corrigido se você evitar o uso de backticks e usar $(..)
com uma substituição citada apropriada
echo "$(cat /proc/cpuinfo | grep 'model name' | uniq)" | cut -d ' ' -f 3,4,5,6,7,8
Mas, dito isto, usando cat
/ grep
etc sequencialmente pode ser evitado e um único awk
pode ser usado no lugar dele
awk -F: '$1 ~ "model name" { print $2 }' /proc/cpuinfo
Ou, ainda mais, se um único espaço principal no resultado acima for preocupante, remova-o usando sub
awk -F: '$1 ~ "model name" { sub(/^[[:space:]]/ ,"" , $2); print $2 }' /proc/cpuinfo
Ou se você tiver GNU
variante de grep
que tem o regex PCRE ativado, que você pode usar como
grep -oP 'model name(\s+):(\s+)\K(.+)' /proc/cpuinfo