2011-06-22 35 views
0

有沒有辦法在文件頂部插入標題?我有一個腳本可以掃描5個IP地址,然後將5個IP掃描結果輸出到一個csv格式的Microsoft Excel文件中。我想在頁面描述了每個列顯示器,如IP,協議,端口等。目前我有這段代碼做到這一點的頂部添加標題:如何在文件的開頭插入標題?

open (FILE, ">>/root/scanned_ip_addresses.csv"); #open excel file 
print FILE "IP,Protocol,Port,State,Service\n"; #Adds header to top of file. 

while (<TEXT>) { 
... 

遺憾的是它不輸出我希望它的方式,由於有五個獨立的掃描,每次IP掃描後輸出一個頭,而不是隻有一個頭。繼承人它是如何輸出的例子:

IP Port Protocol State Service 
xx xx xxx  xxxx xxxxx 
IP Port Protocol State Service 
xx xx xxx  xxxx xxxxx 
IP Port Protocol State Service 
xx xx xxx  xxxx xxxxx 
IP Port Protocol State Service 
xx xx xxx  xxxx xxxxx 
IP Port Protocol State Service 
xx xx xxx  xxxx xxxxx 

我想它打印出來是這樣的:

IP Port Protocol State Service 
xx xx xxx  xxxx xxxxx 
xx xx xxx  xxxx xxxxx 
xx xx xxx  xxxx xxxxx 
xx xx xxx  xxxx xxxxx 
xx xx xxx  xxxx xxxxx 

我怎樣才能解決這個問題呢?

+0

你是否每次從頭開始此文件?既然你追加到文件中,如果你運行它並且只有一個IP被添加,你會看到這個行爲,如果你運行它5次。此外,我們很難在沒有更多腳本代碼的情況下提供大量幫助,以及當您從進行閱讀時所做的工作。 – devyndraen

回答

1

我的印象是,您多次運行腳本並且每次運行腳本時都會將新結果附加到CSV文件中。如果是這樣的話,那麼所有你需要做的就是你的open後立即檢查文件大小:

open (FILE, ">>/root/scanned_ip_addresses.csv"); 
if(-s '/root/scanned_ip_addresses.csv' == 0) { 
    # No content implies that we just created the file 
    # and it needs a header 
    print FILE "IP,Protocol,Port,State,Service\n"; 
} 
# And now continue on as usual 
-1

簡單的方法是使用sed命令。 類似於下面的應該工作 -

sed -I '1 i \header1 header2 header3' file.txt