Macbook System Profiler formatado

0

Eu quero formatar a saída gerada a partir do comando do terminal macbook system_profiler e transpor os valores da linha para colunas sob o mesmo Aplicativo.

Aqui está um trecho do arquivo:

Firefox:

  Version: 32.0.3
  Obtained from: Identified Developer
  Last Modified: 28/09/2014 18:23
  Kind: Intel
  64-Bit (Intel): Yes
  Signed by: Developer ID Application: Mozilla Corporation, Developer ID Certification
  Location: /Applications/Firefox.app
  Get Info String: Firefox 32.0.3

Calendar:

  Version: 7.0
  Obtained from: Apple
  Last Modified: 18/03/2014 06:58
  Kind: Intel
  64-Bit (Intel): Yes
  Location: /Applications/Calendar.app

... e deseja que a saída seja assim:

Notas:

  1. Nem todas as colunas serão preenchidas por aplicativo
  2. Há um máximo de 8 desse tipo de informação (veja o conjunto completo no aplicativo Firefox)
  3. Os espaços preenchidos e as quebras de linha entre grupos de informações por Aplicativo
por Jags 08.11.2014 / 16:51

1 resposta

1

awk -F: ' # set fields separator to :
$1!="" && $2==""{i++;NAME[i]=$1} # if 1st field without second it is app.name
$2!=""{HEAD[$1]=1;DATA[NAME[i],$1]=$2 $3} # put variables name into array
#+ put variables into 2-dimention array app.name,var.name  
END{
printf("%s:","Application"); # first column in header
for (n in HEAD) printf("%s:",n); # print all var.name as header separated by :
print ""; # finish line by newline
for(i in NAME){ # for each app.name
  printf("%s:",NAME[i]); # print app.name
  for (n in HEAD) printf("%s:", DATA[NAME[i],n]); # print each variables corresponding to app.name
  print ""; # finish line by newline
  }
}' data.file | sed -E 's/:\s*/:/g' | column -s: -tn

sed retira todos os espaços após :

column formata colunas de texto

    
por 08.11.2014 / 18:51