2016-08-08 3 views
0

samplefile.txt를 html 테이블 형식으로 변환하고 싶습니다. 모든 특수 문자를 무시해야합니다. ###의 시작 부분은 표 머리글에 들어가야하지만 내용은 표 셀 내부의 표 머리글.리눅스 셸 스크립팅에서 텍스트 파일 데이터를 html 테이블 형식으로 변환하는 방법

또한이 스크립트에서 표제 및 표 테두리의 서식을 지정하고 싶습니다.

이 간단한 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>"

당신은하지 ES가 caped ". 당신은

제목을 사용되지됩니다 사령부의를 실행하는 역 따옴표를 (`)를 사용하는

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) 나는 당신이 모든 인쇄가 있다고 가정하고 너가 |에 의하여 나뉠 때 내용에있는 4 란. 그러나 여기 당신이 네 개의 열을 인쇄 할 의도를한다면, 나는 제안

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

AWK 사용하여 세 개의 열을 인쇄, 지금 분명히 오전 4 대신 세