2016-08-08 31 views
0

Я хочу преобразовать samplefile.txt в формат таблицы html. Он должен игнорировать все специальные символы. Начало char ### должно идти в заголовок таблицы, а содержимое внутри заголовка таблицы в ячейку таблицы.Как преобразовать данные текстового файла в формат таблицы html в сценарии linux shell

Также я хочу отформатировать заголовок таблицы и таблицу в этом скрипте.

Это простой 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>" 
+1

надеюсь, что я сейчас нахожусь ясно .. – user6690412

ответ

0

Там, кажется, мало кто проблемы с скриптом

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

Здесь у вас не эс caped ". Правильный синтаксис будет

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

2) Вы используете кавычку (`), чтобы запустить command.They осуждаются

заголовок = 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 вместо трех