我的文件包含以下逗号分隔的数据,其中第一行是标题
文件数据:
Name,Rollno,Course,Language,Subject,Awarded
Vilas,1,MBA,Account,MB,1
Ajay,2,MMM,Subject Matter,SU,2
Fedrick,33,MMS,Mct,SC,3
部分工作代码:
echo "<!DOCTYPE html>" >> n.html
echo "<html>" >> n.html
echo "<head>" >> n.html
echo "<style>" >> n.html
echo "table, th, td {" >> n.html
echo "border: 1px solid black;" >> n.html
echo "border-collapse: collapse;" >> n.html
echo "}" >> n.html
echo "</style>" >> n.html
echo "</head>" >> n.html
echo "<body>" >> n.html
awk -F, 'BEGIN{print "<table>"} {print "<tr>";for(i=1;i<=NF;i++)print "<td>" $i"</td>";print "</tr>"} END{print "</table>"}' A.txt >> n.html
echo "</body>" >> n.html
echo "</html>" >> n.html
代码输出:
需要如下输出的标题
答案1
尝试
cat <<EOF > n.html
<!DOCTYPE html>
<html>
<head>
<style>
table, th, td {
border: 1px solid black;
border-collapse: collapse;
}
th {background-color: yellow}
</style>
</head>
<body>
EOF
awk -F, 'BEGIN{print "<table>";}
NR==1 { cell="th" ; }
{ print "<tr>";
for(i=1;i<=NF;i++) printf "<%s>%s</%s>",cell,$i,cell ;
print "</tr>" ; cell="td" }
END{print "</table>"}' a.txt >> n.html
echo "</body>" >> n.html
echo "</html>" >> n.html
在哪里
- 我
echo
在此处的文档中折叠了多个。 - 为了便于阅读,我部署了一个多行
awk
程序。 - 我用
printf
NR==1 { cell="th" ; }
将设置cell
为th对于第一行(可以在子句cell="th"
中设置,每次打印后都会覆盖)BEGIN
cell
th
代表(?)表头,旨在执行您想要的操作(尽管您可以在您喜欢的任何单元格中使用它)
答案2
数据以逗号分隔,
,但awk
默认使用空格作为输入文本中字段的分隔符。
请尝试
awk -F, 'BEGIN{print "<table>"} {print "<tr>";for(i=1;i<=NF;i++)print "<td>" $i"</td>";print "</tr>"} END{print "</table>"}' File.txt
该-F
参数给出数据输入的分隔符( 中的列分隔符File.txt
)。