como obter acesso a variáveis de ambiente a partir do arquivo de saída

0

Eu quero obter variáveis de um arquivo de saída específico  localização e formato de arquivo de entrada como abaixo:

log1.txt format:
[v] Output Data
<Value>DIMM_A,4096,1600,Hynix,HMT351S6CFR8C-PB,0942E041,1206,01,Hynix,,</Value>

or log2.txt format:
[v] Output Data
<Value>DIMM_B,4096,1600,Hynix,HMT351S6CFR8C-PB,017E90AE,1205,01,Hynix,,</Value>
<Value>DIMM_A,4096,1600,Hynix,HMT351S6CFR8C-PB,012E908D,1205,01,Hynix,,</Value>

e queremos obter o formato de arquivo OUT.TXT como abaixo:

if log1.txt format and then output file format:
SET DIMM1=DIMM_A,4096,1600,Hynix,HMT351S6CFR8C-PB,0942E041,1206,01,Hynix,,

if log2.txt format and then output file format:
SET DIMM2=DIMM_B,4096,1600,Hynix,HMT351S6CFR8C-PB,017E90AE,1205,01,Hynix,,
SET DIMM1=DIMM_A,4096,1600,Hynix,HMT351S6CFR8C-PB,012E908D,1205,01,Hynix,,

quem você poderia me ajudar? obrigado!

    
por Sam 06.07.2012 / 11:11

1 resposta

0

O principal problema é que não sabemos quantas linhas com Value temos. Portanto, a solução é um pouco complicada:

sed -n '/^<Value/{s/^<[^>]*>/=/;s/<[^>]*>$//;p}' log1.txt | sort | cat -n |\
sed 's/^\s\+\([0-9]*\)\s\+=/SET DIMM=/'

em que o primeiro sed greps linhas com Valor e remove <> tags. Depois disso, sort irá ordenar as linhas, cat -n irá enumerá-las e a última sed irá mover o número da linha para DIMM-num- .

Com awk , seria muito próximo de sed solution:

awk -F'>' '/^<Value/{gsub ("<.*", "", $2);print $2}' log1.txt | sort |\
awk '{print "SET DIMM"NR"="$0}'
    
por 06.07.2012 / 11:22