2010-08-27 14 views
1

Je dois extraire des informations RAM de plusieurs rapports de cpuz et les mettre dans un csv pour des raisons de rapport. ci-dessous est un exemple de fichier texte (découpé) qui contient le texte que je veux extraire.sed extrait des données du fichier texte DOS convertir en csv

Je souhaite extraire tout le texte en suivant les lignes commençant par DIMM mais uniquement lorsque la ligne suivante commence par tabulation et adresse SMBus, et descend à la tension nominale. J'aimerais ensuite les diviser en colonnes (bien que je ne me soucie vraiment du type, la taille et la bande passante maximale)

la csv résultante aurait les colonnes suivantes (et 2 lignes dans cet exemple)

ordinateur nom (du nom de fichier), Dimm #, adresse de smbus, type de mémoire, fabricant, etc.

Cependant, je suis tombé à la première phase d'extraction. J'utilisais sed mais est tombé sur cette commande multiligne:

sed -n -e 'N;/DIMM # ​​\ t * [0-9] \ r \ n \ t /,/Nominal/p' cpuz- FHD505.txt

pour une raison quelconque, il ne prend que le bloc DIMM # ​​2. Quelle instruction sed devrais-je utiliser pour me donner juste les deux blocs de dimm jusqu'à la ligne y compris la tension nominale?

Pour être honnête, je vais probablement abandonner et écrire ceci en python de toute façon car je suis plus familier, mais j'aimerais savoir où j'ai foiré sur cette déclaration de multiline sed.

sortie cpuz: -

Chipset 
------------------------------------------------------------------------- 

Northbridge Intel i845G rev. A1 
Southbridge Intel 82801DB (ICH4) rev. 01 
Memory Type DDR 
Memory Size 1024 MBytes 
Memory Frequency 132.9 MHz (1:1) 
CAS# latency (CL) 2.0 
RAS# to CAS# delay (tRCD) 3 
RAS# Precharge (tRP) 3 
Cycle Time (tRAS) 6 
DRAM Idle Timer 16 

Memory SPD 
------------------------------------------------------------------------- 

DIMM # 1 
SMBus address 0x50 
Memory type DDR 
Manufacturer (ID) Infineon (C1494E46494E454F) 
Size 512 MBytes 
Max bandwidth PC2700 (166 MHz) 
Part number 64D64320GU6B  
Serial number 075ADD21 
Manufacturing date Week 56/Year 03 
Number of banks 2 
Data width 64 bits 
Correction None 
Registered no 
Buffered no 
Nominal Voltage 2.50 Volts 
EPP no 
XMP no 
JEDEC timings table CL-tRCD-tRP-tRAS-tRC @ frequency 
JEDEC#1 2.0-3-3-6-n.a. @ 133 MHz 
JEDEC#2 2.5-3-3-7-n.a. @ 166 MHz 

DIMM # 2 
SMBus address 0x51 
Memory type DDR 
Manufacturer (ID) Samsung (CE00000000000000) 
Size 512 MBytes 
Max bandwidth PC2700 (166 MHz) 
Part number M3 68L6423ETN-CB3 
Serial number 060EFC37 
Manufacturing date Week 54/Year 04 
Number of banks 2 
Data width 64 bits 
Correction None 
Registered no 
Buffered no 
Nominal Voltage 2.50 Volts 
EPP no 
XMP no 
JEDEC timings table CL-tRCD-tRP-tRAS-tRC @ frequency 
JEDEC#1 2.0-3-3-6-n.a. @ 133 MHz 
JEDEC#2 2.5-3-3-7-n.a. @ 166 MHz 

DIMM # 1 
SPD registers 
    00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 
00 80 08 07 0D 0A 02 40 00 04 60 70 00 82 08 00 01 
10 0E 04 0C 01 02 20 C0 75 70 00 00 48 30 48 2A 40 
20 75 75 45 45 00 00 00 00 00 3C 48 30 2D 55 00 00 
30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 
40 C1 49 4E 46 49 4E 45 4F 08 36 34 44 36 34 33 32 
50 30 47 55 36 42 20 20 20 20 20 20 01 4A 03 38 07 
60 5A DD 21 00 00 00 00 00 00 00 00 00 00 00 00 00 
70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
80 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
90 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
A0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 

DIMM # 2 
SPD registers 
    00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 
00 80 08 07 0D 0A 02 40 00 04 60 70 00 82 08 00 01 
10 0E 04 0C 01 02 20 C0 75 70 00 00 48 30 48 2A 40 
20 80 80 45 45 00 00 00 00 00 3C 48 30 2D 55 00 00 
30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 27 
40 CE 00 00 00 00 00 00 00 01 4D 33 20 36 38 4C 36 
50 34 32 33 45 54 4E 2D 43 42 33 20 4E 45 04 36 06 
60 0E FC 37 00 58 39 42 36 37 30 30 00 00 00 00 00 
70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
80 00 03 B2 10 09 19 FF FF FF FF FF 05 12 05 FF FF 
90 00 03 B2 10 09 39 FF FF FF FF FF 02 20 18 FF FF 
A0 00 03 B2 10 09 19 FF FF FF FF FF 04 23 54 FF FF 
B0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
C0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
D0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
E0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 
F0 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 


Monitoring 
------------------------------------------------------------------------- 

Mainboard Model 07E4h (0x00000148 - 0x00024680) 

LPCIO 
------------------------------------------------------------------------- 

LPCIO Vendor SMSC 
LPCIO Vendor ID 0x55 
LPCIO Chip ID 0x6D 
Config Mode I/O address 0x2E 
Config Mode LDN 0x8 
Config Mode registers 
    00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 
00 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 00 
10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
20 6D 01 09 00 04 00 2E 00 00 00 00 00 00 00 00 00 
30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 

Hardware Monitors 
------------------------------------------------------------------------- 

Hardware monitor SMSC EMC6D10X 
Voltage 0 0.00 Volts [0x0] (+1.5V) 
Voltage 1 1.47 Volts [0x7D] (CPU VCORE) 
Voltage 2 3.26 Volts [0xBE] (ATX +3.3V) 
Voltage 3 5.10 Volts [0xC4] (ATX +5V) 
Voltage 4 11.98 Volts [0xBF] (ATX +12V) 
Temperature 0 0°C (32°F) [0x0] (Diode 1) 
Temperature 1 24°C (75°F) [0x18] (Internal) 
Temperature 2 33°C (91°F) [0x21] (Diode 2) 
Fan 0 1455 RPM [0xE7F] (FANIN0) 
Register space SMBus, base address = 0x0FC00 
SMBus request channel 0x0, address 0x2E 

sortie:

DIMM #       2 
     SMBus address   0x51 
     Memory type    DDR 
     Manufacturer (ID)  Samsung (CE00000000000000) 
     Size     512 MBytes 
     Max bandwidth   PC2700 (166 MHz) 
     Part number    M3 68L6423ETN-CB3 
     Serial number   060EFC37 
     Manufacturing date  Week 54/Year 04 
     Number of banks   2 
     Data width    64 bits 
     Correction    None 
     Registered    no 
     Buffered    no 
     Nominal Voltage   2.50 Volts 
     EPP      no 

Répondre

2

pour cette solution:

sed -n ':a; /^DIMM/,/^[[:blank:]]*Nominal Voltage/ N; /^DIMM/,/[[:blank:]]*Nominal Voltage/ ! d ;/[[:blank:]]*Nominal Voltage/ {/[[:blank:]]*Nominal Voltage/p;d}; ba' cpuz-FHD505.txt 
+0

Dieu, qui a parfaitement fonctionné, merci! – Kerridge0

0
awk -vRS="" -F"\n" '/DIMM/&&$2~/SMBus/{ 
    for(i=1;i<=NF;i++) { 
    print $i 
    # from here, you process the columns you need 
    }  
}' file 
+0

Salut, est-ce regard sur le fichier en termes de lignes étant des colonnes, alors si une ligne contient le texte DIMM, puis la deuxième ligne après contient SMBus, il va retourner les lignes suivantes jusqu'à la tension nominale? Je ne peux pas voir comment le script pourrait savoir quand arrêter, et passer dans la DIMM 2. Quand je l'exécute sur un fichier (par exemple, la sortie de cpuz ci-dessus), je ne reçois rien. – Kerridge0