[英]How can I extract data from HTML table cells using sed, awk, or grep?
[英]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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.