Sed
在 HTML 輸出中格式化文件
我有一個小腳本,它將為系統上的使用者格式化一個包含所有失敗登錄的日誌文件。我編寫了腳本以這種格式在文本文件中輸出數據(兩列第一列是失敗的登錄嘗試次數,第二列是使用者):
1,325 Unknown 505 root 17 adm 16 ftp etc...
我需要以這種方式在控制台上以 HTML 輸出格式格式化此文件(文件中的每一行都列印在 html 換行符上):
<html> <body><h1>Failed Login Attempts</h1> <br />1,325 Unknown <br />505 Root <br />17 adm etc.... </body> </html>
我目前所做的是將文件保存到一個變數中,然後將該變數放入 html 中,如下所示:
file=$(cat finalo) #file name is finalo #print to console echo " <html> <body><h1>Failed Login Re...</h1> <br />$file </body> </html>"
輸出顯示在一個上的整個文件內容
html <br />
。我的問題是如何讓文件中的每一行列印在每一行上<br />
?我嘗試讀取文件的每一行,將其保存到一個變數中,然後在每一
<br />
行上使用該變數,如下所示:line1=$(sed -n '1p' < finalo) line2=$(sed -n '2p' < finalo) line3=$(sed -n '3p' < finalo)
和:
<html> <body><h1>Failed Login Report</h1> <br />$line1 <br />$line2 <br />$line3 etc...
這個解決方案給了我正確的輸出,但是,除了這個解決方案很混亂之外,如果文件的行數與硬編碼的行數不同,則存在一個主要缺陷,它將不會顯示。
任何幫助,將不勝感激!這是家庭作業。
這比你想像的要容易:
echo " <html> <body><h1>Failed Login Attempts</h1>" # The following line prepends <br /> before each line in finalo sed 's|^|<br />|' finalo echo " </body> </html>"
您還可以使用
while
#!/bin/bash echo " <html> <body><h1>Failed Login Attempt</h1>" while read line do echo "<br />$line" done < file echo "</body> </html>"
或者帶一個功能
function r_lines() { while read line do echo "<br />$line" done < file return $line } echo " <html> <body><h1>Failed Login Attempts</h1> $(r_lines) </body> </html>"