2016-08-08 15 views
0

Ich möchte samplefile.txt in HTML-Tabellenformat konvertieren.Es sollte alle Sonderzeichen zu ignorieren. Der Beginn der char ### muss in Tabellenkopf gehen, während der Inhalt innerhalb der Tabellenkopfzeile in die Tabellenzelle.Wie konvertiert man Textdatei Daten in HTML-Tabellenformat in Linux Shell-Scripting

Auch ich möchte Tabellenüberschrift und Tabellenrahmen in diesem Skript formatieren.

Dies ist ein einfaches 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 

Dies ist das Skript, das ich in gearbeitet haben - dieser Code funktioniert nicht 100% Irgendwie:

scheint
#!/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>" 
+1

hoffe, ich bin jetzt klar .. – user6690412

Antwort

0

Es gibt nur wenige zu sein Probleme mit dem Skript

1) echo "<th colspan="3" style="font-family: 'Times New Roman';"> $headdata </th>"

Hier haben Sie nicht es caped ". Die korrekte Syntax wäre

echo "<th colspan=\"3\" style=\"font-family: 'Times New Roman';\"> $headdata </th>"

2) Sie Backticks verwenden (`) eine command.They zu laufen sind veraltet

heading = echo $line | cut -c-3

Stattdessen verwenden $()

heading=$(echo $line | cut -c-3)

3) Ich gehe davon aus, dass Sie alle drucken vier Spalten im Inhalt, wenn Sie durch | teilen. Aber hier Sie drucken nur drei Spalte awk

awk -F"|" '{print "<td>" $1 "</td><td>" $2"</td><td>"$3"</td>"}'

Ich schlage vor, wenn Sie Absicht zu tun, alle vier Spalte zu drucken, stellen Sie den colspan bis 4 anstelle von drei