2010-08-27 132 views
1

我需要從幾個cpuz報告中提取RAM信息,並將它們放入csv中以進行報告。下面的 是一個示例文本文件(剪切),其中包含我想要提取的文本。sed從dos文本文件中提取數據轉換爲csv

我想提取所有以DIMM開頭的行之後的文本,但僅限於下一行以tab和SMBus地址開始並下降到標稱電壓的位置。那麼我想他們拆分成多列(雖然我只有真正關心的類型,規模和最大帶寬)

產生的CSV將有以下幾列(2列在這個例子中)

計算機名稱(來自文件名),Dimm#,smbus地址,存儲器類型,製造商等。

然而,我已經在第一個抽取階段倒下了。我正在使用sed但在此多行命令處倒下:

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

由於某些原因,它只拾取DIMM#2塊。

我應該用什麼sed語句來給我兩個dimm模塊,包括標稱電壓?

說實話我可能會放棄並用python編寫它,因爲我比較熟悉,但是我很想知道我在這個多行sed語句中搞砸了什麼。

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 

輸出:

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 

回答

2

試試這個:

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

善良,完美的工作,謝謝! – Kerridge0 2010-08-27 17:15:40

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

嗨,這是否看看文件中的行方面是列,那麼如果一行包含文本DIMM,然後是第二行包含SMBus,它將返回以下行直到標稱電壓?我看不到腳本如何知道何時停止,並進入DIMM 2.當我在文件上運行它時(例如上面的cpuz輸出),我什麼都沒有返回。 – Kerridge0 2010-08-27 16:54:22