[英]BASH formatting output of cpuinfo
我正在編寫腳本以獲取服務器上的大量信息,這些信息將結果輸出到html文件中。 工作到一定程度。 抓住cpuinfo時,我被卡住了。 它抓住它並將其轉儲到我想要的位置,但是它沒有像在shell中那樣被格式化。 我已經嘗試使用sed,但是也許我沒有很好地使用它,並且我嘗試了使用列,但似乎沒有任何效果。 我一直在說話。 請在下面查看我的代碼以及它的輸出方式...。
謝謝
#!/bin/bash
# Define global variables
HOSTNAME=`uname -n`
TITLE="System Information for "
CPUINFO=`cat /proc/cpuinfo`
cat <<- EOF > /tmp/grab_server_info.html
<html>
<head>
<title>
$TITLE $HOSTNAME
</title>
</head>
<body>
<h1>$HOSTNAME</h1>
<p>Last run on $(date +"%c") by $USER</p>
<h3>UPTIME</h3>
<p>$(uptime)</p>
<h3>CPU Information</h3>
<p>$CPUINFO</p>
</body>
</html>
EOF
最終看起來像這樣:
當然,我要尋找的是與在shell中運行cat / proc / cpuinfo所得到的內容更加內聯的東西。 任何幫助,將不勝感激。
再次感謝。
您要使用<pre>
元素 :
HTML
<pre>
元素表示預格式化的文本,該文本將完全按照HTML文件中的內容進行呈現。 通常使用非比例(“等寬字體”)字體呈現文本。 此元素內的空白顯示為書面形式。
<h3>CPU Information</h3>
<pre>$CPUINFO</pre>
例:
<pre> processor : 0 vendor_id : GenuineIntel cpu family : 6 </pre>
或者,您可以處理輸出以從中生成實際的HTML表。
使用<pre>
當然是最簡單的方法-它比我的建議還更好地處理流氓符號,當它起作用時,它看起來往往更好:用表標簽裝飾$ CPUINFO的輸出的每一行以得到更靈活的布局:
<table border = "1">
<tr><td>
</td><td>
</td></tr>
</table>
之后 這是快速的sed,例如:
cat /proc/cpuinfo| sed -E 's/^([^:]*):(.*)$/<tr><td>\1<\/td><td>\2<\/td><\/tr>/'
如果您擔心正文中的非可打印內容,則可以用<pre>
標簽將每個子句括起來。
還要注意,如果您有多個處理器,則列表可能會很長(80個處理器+),並且每個字段都相同(除了cpu MHz),因此您可以考慮將它們組合成更多確實有所不同的列。 不過,這將是非常毛茸茸的html。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.