繁体   English   中英

Unix sed和awk命令获取记录并显示html表

[英]unix sed and awk commands get records and display html table

是Unix的新手,我尝试使用sed和awk命令获取用户及其目录详细信息,并尝试在html表中显示它

我已经尝试了以下代码,它能够打印表格的一列,我无法创建第二列和第三列,请告诉我在第二列和第三列中打印记录的可能方法

vars=`cat /etc/passwd | sed -e "s/:/\t/g" | awk '{print $1}'`
echo '<table style="width:100%" border="2px"><tr><th>username</th><th>column1</th><th>column2</th>' >> demo.html
for variable in $vars
 do
 echo "<tr><td>$variable</td></tr>" >> demo.html
done
 echo "</table>" >> demo.html

假设只有第一列可能包含空格,而第二列和第三列将不包含空格,那么这是编写这种脚本的一种方法:

{
echo '<table style="width:100%" border="2px"><tr><th>username</th><th>column1</th><th>column2</th>'
awk -F: '{print $1; print $2, $3}' /etc/passwd | while read user
do
    read pass uid
    echo "<tr><td>$user</td><td>$pass</td><td>$uid</td></tr>"
done
echo "</table>" 
} | tee demo.html

这是使用awk一种简单方法:

awk -F':' '
           function wrap(tag,x) {return "<"tag">"x"</"tag">"}
           function row(x)      {return wrap("tr",x)}
           function cell(x)     {return wrap("td",x)}

           BEGIN {
               print "<table style=\"width:100%\" border=\"2px\">"
               print row(cell("user_name")  cell("home_dir"))
           }
           {
               print row(cell($1) cell($6) )
           }
           END{
               print "</table>"
           }
          ' /etc/passwd

将输出(记录很少):

 <table style="width:100%" border="2px"> <tr><td>user_name</td><td>home_dir</td></tr> <tr><td>root</td><td>/root</td></tr> <tr><td>daemon</td><td>/usr/sbin</td></tr> <tr><td>bin</td><td>/bin</td></tr> <tr><td>sys</td><td>/dev</td></tr> <tr><td>sync</td><td>/bin</td></tr> <tr><td>akshay</td><td>/home/akshay</td></tr> <tr><td>mysql</td><td>/nonexistent</td></tr> <tr><td>gdm</td><td>/var/lib/gdm3</td></tr> </table> 

这将生成一个表格,如下图所示:

 awk -F':' 'BEGIN{print "<table border=1    cellpadding=1  cellspacing=0    bordercolor=BLACK ><tr><td>User Name</td><td>Default Shell</td></tr>"}{ print "<tr><td>"$1"</td><td>"$(NF)"</td></tr>"} END { print "</table>" } ' /etc/passwd

产量

table_sample

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM