我在bash / html中开发了CGI。
使用此CGI,我可以显示csv文件中的一些信息。
这些信息之一是不同FRAME在RAM和CPU中的消耗。
要显示这些信息,请创建此页面:
#!/bin/bash
echo "Content-type: text/html"
echo ""
echo '
<html>
<head>
<meta http-equiv="Content-Type" content="test/html"; charset=UTF-8">
<title> CLF MONITORING </title>
<h1> FRAME monitoring <font size=3> <a href="Index.sh">[ Index ]</a> </font> </h1>
<hr size="4" color="blue">
<style>
body{
background-color: #eff1f0;
}
</style>
</head>
<body>'
echo "<table>"
echo "<tr>"
echo "<td>"
echo "<PRE>"
echo "`./FRAME_SCRIPT.sh cccc.csv bbbb.csv`"
echo "</td>"
echo "</tr>"
echo "</PRE>"
echo "</table>"
echo '</body>'
'</html>'
我的脚本“ FRAME_SCRIPT.sh”显示来自不同csv文件的有关FRAME的信息。这里的脚本
#!/bin/bash
OLDIFS=$IFS
IFS=','
for arg
do
echo -e "File : $arg "
echo "======================================================="
echo ""
while read FRAME RAM CPU1 CPU2
do
if [[ $FRAME != $PREV ]]
then
PREV=$FRAME
echo "FRAME : $FRAME"
echo -e "-----------------\n"
fi
echo -e "RAM : \t$RAM\n\
CPU 1 :\t$CPU1\n\
CPU 2 :\t$CPU2\n"
echo ""
done < "$arg"
done
我使用命令运行它:
./My_script.sh *.csv
输出为:
File : cccc.csv
=======================================================
FRAME : MIAIBB00
-----------------
RAM :
CPU 1 :
CPU 2 :
FRAME : MIAIBTST1
-----------------
RAM :
CPU 1 :
CPU 2 :
FRAME : MIAIBYC00
-----------------
RAM : 8
CPU 1 : 2.0
CPU 2 : 4
RAM : 5
CPU 1 : 0.1
CPU 2 : 1
RAM : 6
CPU 1 : 0.2
CPU 2 : 1
RAM : 0.25
CPU 1 : 0.2
CPU 2 : 1
RAM : 64
CPU 1 : 3.0
CPU 2 : 7
RAM : 80
CPU 1 : 20.0
CPU 2 : 20
RAM : 8
CPU 1 : 1.0
CPU 2 : 2
RAM : 4
CPU 1 : 1.0
CPU 2 : 2
RAM : 4
CPU 1 : 1.0
CPU 2 : 2
RAM : 0
CPU 1 : null
CPU 2 : 0
File : bbbb.csv
=======================================================
FRAME : MO1PPC02
-----------------
RAM : 12
CPU 1 : 0.3
CPU 2 : 2
RAM : 8
CPU 1 : 0.2
CPU 2 : 2
RAM : 15
CPU 1 : 0.8
CPU 2 : 2
RAM : 8
CPU 1 : 0.5
CPU 2 : 1
RAM : 36
CPU 1 : 2.0
CPU 2 : 4
RAM : 48
CPU 1 : 8.0
CPU 2 : 12
RAM : 8
CPU 1 : 0.2
CPU 2 : 2
RAM : 8
CPU 1 : 0.2
CPU 2 : 2
RAM : 31
CPU 1 : 2.0
CPU 2 : 8
但是在我的网页上,我想显示如下信息:
想法是,每当出现“ File:XXXXX”模式时,带有自己的信息的该模式就会在以前的“ File:XXXX”模式旁边的新列中显示。
我认为,如果像键模式一样使用“ File:”,那是可能的。我无法使用文件名,因为它从来都不是同一文件名。也许可以这样做,但我不知道如何...
举例来说,我在只有2个csv文件的目录中运行脚本,但实际上,我有更多的csv文件。因此,在这种情况下,我仅使用2个csv来更加清楚。
您有任何想法吗?
答案 0 :(得分:0)
请勿使用shell循环操作文本(请参见why-is-using-a-shell-loop-to-process-text-considered-bad-practice)。
如果我是我,则将输出格式化为HTML表格,而不是预先格式化的文本,但是只需按照以下步骤操作,即可查看获取所需输出的一种方法:
$ cat ../tst.awk
BEGIN {
FS = ","
OFS = " : "
split("FRAME,RAM,CPU 1,CPU 2", titles)
}
FNR == 1 {
close(out)
out = "out" ++cnt ".txt"
print "File", FILENAME ORS "====================" > out
}
$1 != prev {
print "" ORS fmt(1) "\n--------------------\n" > out
prev = $1
}
{
for (i=2; i<=NF; i++) {
print fmt(i) > out
}
print "" > out
}
function fmt(fldNr) { return sprintf("%-8s%s", titles[fldNr] OFS, $fldNr) }
。
$ ls
bbbb.csv cccc.csv
。
$ tail -n +1 *.csv
==> bbbb.csv <==
MO1PPC02,12,0.3,2
MO1PPC02,8,0.2,2
MO1PPC02,15,0.8,2
MO1PPC02,8,0.5,1
MO1PPC02,36,2.0,4
MO1PPC02,48,8.0,12
MO1PPC02,8,0.2,2
MO1PPC02,8,0.2,2
MO1PPC02,31,2.0,8
==> cccc.csv <==
MIAIBB00,,,
MIAIBTST1,,,
MIAIBYC00,8,2.0,4
MIAIBYC00,5,0.1,1
MIAIBYC00,6,0.2,1
MIAIBYC00,0.25,0.2,1
MIAIBYC00,64,3.0,7
MIAIBYC00,80,20.0,20
MIAIBYC00,8,1.0,2
MIAIBYC00,4,1.0,2
MIAIBYC00,4,1.0,2
MIAIBYC00,0,null,0
。
$ awk -f ../tst.awk cccc.csv bbbb.csv
。
$ ls
bbbb.csv cccc.csv out1.txt out2.txt
。
$ tail -n +1 *.txt
==> out1.txt <==
File : cccc.csv
====================
FRAME : MIAIBB00
--------------------
RAM :
CPU 1 :
CPU 2 :
FRAME : MIAIBTST1
--------------------
RAM :
CPU 1 :
CPU 2 :
FRAME : MIAIBYC00
--------------------
RAM : 8
CPU 1 : 2.0
CPU 2 : 4
RAM : 5
CPU 1 : 0.1
CPU 2 : 1
RAM : 6
CPU 1 : 0.2
CPU 2 : 1
RAM : 0.25
CPU 1 : 0.2
CPU 2 : 1
RAM : 64
CPU 1 : 3.0
CPU 2 : 7
RAM : 80
CPU 1 : 20.0
CPU 2 : 20
RAM : 8
CPU 1 : 1.0
CPU 2 : 2
RAM : 4
CPU 1 : 1.0
CPU 2 : 2
RAM : 4
CPU 1 : 1.0
CPU 2 : 2
RAM : 0
CPU 1 : null
CPU 2 : 0
==> out2.txt <==
File : bbbb.csv
====================
FRAME : MO1PPC02
--------------------
RAM : 12
CPU 1 : 0.3
CPU 2 : 2
RAM : 8
CPU 1 : 0.2
CPU 2 : 2
RAM : 15
CPU 1 : 0.8
CPU 2 : 2
RAM : 8
CPU 1 : 0.5
CPU 2 : 1
RAM : 36
CPU 1 : 2.0
CPU 2 : 4
RAM : 48
CPU 1 : 8.0
CPU 2 : 12
RAM : 8
CPU 1 : 0.2
CPU 2 : 2
RAM : 8
CPU 1 : 0.2
CPU 2 : 2
RAM : 31
CPU 1 : 2.0
CPU 2 : 8
。
$ paste *.txt
File : cccc.csv File : bbbb.csv
==================== ====================
FRAME : MIAIBB00 FRAME : MO1PPC02
-------------------- --------------------
RAM : RAM : 12
CPU 1 : CPU 1 : 0.3
CPU 2 : CPU 2 : 2
RAM : 8
FRAME : MIAIBTST1 CPU 1 : 0.2
-------------------- CPU 2 : 2
RAM : RAM : 15
CPU 1 : CPU 1 : 0.8
CPU 2 : CPU 2 : 2
RAM : 8
FRAME : MIAIBYC00 CPU 1 : 0.5
-------------------- CPU 2 : 1
RAM : 8 RAM : 36
CPU 1 : 2.0 CPU 1 : 2.0
CPU 2 : 4 CPU 2 : 4
RAM : 5 RAM : 48
CPU 1 : 0.1 CPU 1 : 8.0
CPU 2 : 1 CPU 2 : 12
RAM : 6 RAM : 8
CPU 1 : 0.2 CPU 1 : 0.2
CPU 2 : 1 CPU 2 : 2
RAM : 0.25 RAM : 8
CPU 1 : 0.2 CPU 1 : 0.2
CPU 2 : 1 CPU 2 : 2
RAM : 64 RAM : 31
CPU 1 : 3.0 CPU 1 : 2.0
CPU 2 : 7 CPU 2 : 8
RAM : 80
CPU 1 : 20.0
CPU 2 : 20
RAM : 8
CPU 1 : 1.0
CPU 2 : 2
RAM : 4
CPU 1 : 1.0
CPU 2 : 2
RAM : 4
CPU 1 : 1.0
CPU 2 : 2
RAM : 0
CPU 1 : null
CPU 2 : 0
。
$ paste *.txt | column -L -s$'\t' -t
File : cccc.csv File : bbbb.csv
==================== ====================
FRAME : MIAIBB00 FRAME : MO1PPC02
-------------------- --------------------
RAM : RAM : 12
CPU 1 : CPU 1 : 0.3
CPU 2 : CPU 2 : 2
RAM : 8
FRAME : MIAIBTST1 CPU 1 : 0.2
-------------------- CPU 2 : 2
RAM : RAM : 15
CPU 1 : CPU 1 : 0.8
CPU 2 : CPU 2 : 2
RAM : 8
FRAME : MIAIBYC00 CPU 1 : 0.5
-------------------- CPU 2 : 1
RAM : 8 RAM : 36
CPU 1 : 2.0 CPU 1 : 2.0
CPU 2 : 4 CPU 2 : 4
RAM : 5 RAM : 48
CPU 1 : 0.1 CPU 1 : 8.0
CPU 2 : 1 CPU 2 : 12
RAM : 6 RAM : 8
CPU 1 : 0.2 CPU 1 : 0.2
CPU 2 : 1 CPU 2 : 2
RAM : 0.25 RAM : 8
CPU 1 : 0.2 CPU 1 : 0.2
CPU 2 : 1 CPU 2 : 2
RAM : 64 RAM : 31
CPU 1 : 3.0 CPU 1 : 2.0
CPU 2 : 7 CPU 2 : 8
RAM : 80
CPU 1 : 20.0
CPU 2 : 20
RAM : 8
CPU 1 : 1.0
CPU 2 : 2
RAM : 4
CPU 1 : 1.0
CPU 2 : 2
RAM : 4
CPU 1 : 1.0
CPU 2 : 2
RAM : 0
CPU 1 : null
CPU 2 : 0