1

dmidecode からの出力を特定の方法でフォーマットする手段を探していたところ、次の記事を見つけました。

http://www.experts-exchange.com/Programming/Languages/Scripting/Shell/Q_27770556.html

上記の回答のコードから必要なフィールドの一部を変更しました。これは、 awk が dmidecode から引用符付きの csv 出力を作成していることを示しています

dmidecode -t 17 | awk -F: '/Size|Locator|Speed|Manufacturer|Serial Number|Part Number/{sub(/^ */,"",$2);s=sprintf("%s,\"%s\"",s,$2)}/^Memory/{print s;s=""}END{print s}' |sed -e 's/,//' | grep -iv "no module" | tr -d ' '

"4096MB","CPU0","DIMM01","1066MHz","Samsung","754C2C33","M393B5273CH0-YH9"

タブ付き、引用符なし

4096MB  CPU0    DIMM01  1066MHz         Samsung         754C2C33        M393B5273CH0-YH9

私はまだ頭を悩ませようとしていますが、適切な変更を見せてくれる人に感謝します

上記のコードを修正し、以前に貼り付けた動作しない構文

4

1 に答える 1

1

あなたが投稿したリンクから、データを というファイルに保存しましたfile.txt。レコードが空白行で区切られていることに気付きました。次のawkコードを使用しました。

awk 'BEGIN { FS=":"; OFS="\t" } /Size|Locator|Speed|Manufacturer|Serial Number|Part Number/ { gsub(/^[ \t]+/,"",$2); line = (line ? line OFS : "") $2 } /^$/ { print line; line="" }' file.txt

結果:

2048 MB XMM1    Not Specified   1333 MHz    JEDEC ID    8106812F      HMT125U6BFR8C-H9
No Module Installed XMM2    Not Specified   Unknown JEDEC ID        
2048 MB XMM3    Not Specified   1333 MHz    JEDEC ID    7006C12F    HMT125U6BFR8C-H9
No Module Installed XMM4    Not Specified   Unknown JEDEC ID        
4096 kB SYSTEM ROM  Not Specified   Unknown Not Specified   Not Specified   Not Specified

コマンドラインは次のようになります。

dmidecode -t 17 | awk 'BEGIN { FS=":"; OFS="\t" } /Size|Locator|Speed|Manufacturer|Serial Number|Part Number/ { gsub(/^[ \t]+/,"",$2); line = (line ? line OFS : "") $2 } /^$/ { print line; line="" }' | grep -iv "no module"

編集:

dmidecode -t 17 | awk 'BEGIN { FS=":"; OFS="\t" } /Size|Locator|Speed|Manufacturer|Serial Number|Part Number/ { if ($2 ~ /MB$|MHz$/) { gsub(/[ \t]+/,"",$2) } gsub(/^[ \t]+/,"",$2); line = (line ? line OFS : "") $2 } /^$/ { print line; line="" }' | grep -iv "no module"
于 2012-09-03T07:26:42.280 に答える