cómo obtener acceso a las variables de entorno desde el archivo de salida

cómo obtener acceso a las variables de entorno desde el archivo de salida

Quiero obtener variables de una ubicación específica del archivo de salida y el formato del archivo de entrada como se muestra a continuación:

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>

y queremos obtener el formato de archivo OUT.TXT de salida como se muestra a continuación:

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,,

¿A quién podrías ayudarme? ¡gracias!

Respuesta1

El principal problema es que no sabemos cuántas líneas tenemos Value. Por tanto la solución es un poco complicada:

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

donde los primeros sedgreps se alinean con Valor y eliminan <>etiquetas. Después de eso, sortordenará las líneas, cat -nlas enumerará y, por último, sedmoverá el número de línea a DIMM-num-.

Con awkesto estaría bastante cerca de sedla solución:

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

información relacionada