我想将samplefile.txt转换为html表格式。它应该忽略所有特殊字符.cchar ###
的开头必须进入表头,而表头内的内容进入表格单元格。
另外,我想在此脚本中格式化表格标题和表格边框。
这是一个简单的samplefile.txt:
###File1
###File2
###File3
###Sports
Y|Cricket|Football|basketball
Y|beach volleyball|boxing|diving
Y|cycling|Batminton|Swimming
###Country
$|United States|United Kingdom|India
$|Peru|Japan|Poland
这是我一直在使用的脚本 - 不知怎的,这段代码不能100%运行:
#!/bin/sh
tableflag=0
echo "<html>"
echo "<body>"
while read line
do
#echo $line
heading=`echo $line | cut -c-3`
headdata=`echo $line | cut -c4-`
if [ "$heading" == "###" ]; then
#if [ $tableflag -eq 1 ]; then
#echo "</table>"
#fi
echo "<th colspan="3" style="font-family: 'Times New Roman';"> $headdata </th>"
echo '<tr> </tr>'
echo '<table border="1" style="width:80%;margin:30px">'
else
tableflag=1
echo '<tr>'
echo "$line" | awk -F"|" '{print "<td>" $2 "</td><td>" $3"</td><td>"$4"</td>"}'
echo '</tr>'
echo '<tr> </tr>'
fi
done < samplefile.txt
echo "</table>"
echo "</body>"
echo "</html>"
答案 0 :(得分:0)
脚本似乎没什么问题
1) echo "<th colspan="3" style="font-family: 'Times New Roman';"> $headdata </th>"
此处您尚未转义"
。正确的语法是
echo "<th colspan=\"3\" style=\"font-family: 'Times New Roman';\"> $headdata </th>"
2)您正在使用反引号(`)来运行命令。它们已被弃用
航向= echo $line | cut -c-3
而是使用$()
heading=$(echo $line | cut -c-3)
3)我假设你在|
分割时打印了所有四列内容。但是在这里你只使用awk打印三列
awk -F"|" '{print "<td>" $1 "</td><td>" $2"</td><td>"$3"</td>"}'
我建议,如果您打算打印所有四列,请将colspan设置为4而不是三列