如何将列标题添加到csv文件

时间:2013-02-01 15:38:23

标签: bash shell unix csv

我正在不同服务器上编写监控脚本。

我的要求是从服务器每30分钟收集一次日期,合并数据并通过邮件发送。

现在,我遇到的问题是在将数据发送到csv文件时,我需要添加无法执行的列标题。

srv1上的代码段

#!/bin/bash 

EAI=`netstat | grep 16001 | wc -l` 
Date=`date` 
DM=`psme | grep -i DM_EAI | wc -l`        

while true; do
     echo $Date $EAI
     sleep 1800 done  > eai_js_srv1.csv   
while true; do
     echo $Date $DM
     sleep 1800 done  > dm_eai_srv1.csv

srv2上的代码片段

#!/bin/bash  
EAI=`netstat | grep 16001 | wc -l`  
Date=`date`  
DM=`psme | grep -i DM_EAI | wc -l`   

while true; 
    do echo $Date $DM sleep 1800 
done > eai_js_srv2.csv   

while true; 
    do echo $Date $EAI sleep 1800 
done > dm_eai_srv2.csv

此后我将两台服务器的文件合并如下:

join -a1 -a2 eai_js_srv1.csv eai_js_srv2.csv > eai_js_counts.csv  
join -a1 -a2 dm_eai_srv1.csv dm_eai_srv2.csv > dm_eai_counts.csv

由于我正在使用while循环,所以数据会在每30分钟附加到同一个文件,所以现在我需要所需的输出:

eai_js_counts.csv:

Timestamp                           BRM Servers 
                                    611       610   
1/28/2013 02:00 AM PST              176       99   
1/28/2013 06:00 AM PST              150       115

dm_eai_counts.csv:

Timestamp                           BRM Servers 
                                    611       610  
1/28/2013 02:00 AM PST              4         5  
1/28/2013 06:00 AM PST              4         5

1 个答案:

答案 0 :(得分:0)

#!/bin/bash  

F=eai_js_srv2.csv
D=dm_eai_srv2.csv
cat > $F << EOF # Write a header to the file $F
Timestamp                           BRM Servers 
                                    611       610
EOF

cat > $D << EOF # Write a header to the file $D
Timestamp                           BRM Servers 
                                    611       610
EOF

# Write data every 1800 seconds.  
while sleep 1800; do
    exec >> $F  # Direct output to file $F
    date | tr '\n' ' '
    netstat | grep 16001 | wc -l
    exec >> $D # Direct output to $D
    date | tr '\n' ' '  
    psme | grep -i DM_EAI | wc -l
done