Bem, para uma abordagem simples, você poderia fazer:
sed 's/\(.*\)\t:\(.*\)/"" : ""/' /proc/cpuinfo
Isso corresponderá a tudo até uma guia seguida de dois pontos e salvará como , depois de tudo após os dois pontos e salvará como
. A substituição coloca aspas em torno deles.
Isso, no entanto, resulta em casos como estes:
"fpu " : " yes"
power management:
Os itens com espaços em branco extras antes da guia têm seus espaços em branco incluídos e os vazios são ignorados. Esta versão do Perl lida com os corretamente:
perl -F: -alpe 's/.*/"$F[0]" : "$F[1]"/' /proc/cpuinfo
Isso dividirá a linha em :
na matriz @F
( -F
define o caractere para dividir e -a
ativa a divisão automática em @F
) e imprime cada lado citado. Ele será quebrado se você tiver mais de um :
em uma linha, mas não acho que isso acontecerá em /proc/cpuinfo
. No entanto, também imprime todas as linhas em branco no arquivo. Para evitar isso, canalize-o em grep
first:
grep . /proc/cpuinfo | perl -F: -alpe 's/.*/"$F[0]" : "$F[1]"/' /proc/cpuinfo
Ou, imprima apenas se uma linha contiver :
:
perl -F: -alne 's/.*:.*/"$F[0]" : "$F[1]"/ && print' /proc/cpuinfo