У меня есть большой файл больше чем с 10 000 записей, отформатированных как ниже.
Это должно быть преобразовано в таблицу HTML
Я попробовал различные способы преобразовать в csv и затем к HTML и т.д., но я до сих пор не смог получить желаемый вывод
Data.txt
Name : john
age : 20
tag id : 1234567
Name : Mark
age : 40
tag id : 832245
Name : tom
age : 60
tag id : 789324
......
Я хочу, чтобы это было преобразовано в таблицу "HTML" как это:
Name Age Tagid
John 20 1234567
Mark 40 832245
tom 60 789324
Я должен обработать файлы 10 000 записей. Как я могу сделать это?
Это было бы намного короче, если бы я знал, как сделать несколько поисковых замен в sed., который я не делаю. О, хорошо. после этого это стало глупым. никакой awk не требуется. Я предполагаю, что Ваш файл данных называют bs.dat и что Вы хотите csv для миграции на реальную систему баз данных позже. выводу в потрясающий файл HTML также..., возможно, понадобится некоторый css. Этот паршивый вывод html5 совместимый. (как)
#!/bin/bash
touch me lel.html
rm me lel.html
touch me p1 p2 p3 p4 lel.html
#Fix BS data make a proper csv
c=","
#remove spaces
cat bs.dat | sed 's/ //g' > p1
#remove Name:
cat p1 | sed 's/Name://g' > p2
#Remove age:
cat p2 | sed 's/age://g' > p3
#remove tagid:
cat p3 | sed 's/tagid://g' > p4
#make a csv
file=p4
i=1
while read line
do
if [ "$i" = "1" ]; then
l1=$line$c && i=2
elif [ "$i" = "2" ]; then
l2=$l1$line$c && i=3
elif [ "$i" = "3" ]; then
l3=$l2$line >> me && i=1 && echo $l3 >> me
else
echo "something went wrong: $line"
exit
fi
done <"$file"
rm p1 p2 p3 p4
#Cool now we have a proper csv for later when we need to migrate to a real database
#ok lets make some html
touch lel.html
echo "<!DOCTYPE html><html><head><meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">" > lel.html
echo "<meta content=\"code, bash, lolz\" name=\"keywords\" /><title>IDK what</title></head><body>" >> lel.html
echo "<pre>Name Age ID " >> lel.html
while IFS=, read col1 col2 col3
do
echo "$col1 $col2 $col3" >> lel.html
done < me
echo "</pre></body></html>" >> lel.html
firefox lel.html
, Учитывая, что у Вас есть большой файл данных, можно решить удалить p1-p4 файлы ранее. вывод csv будет меньшим файлом, как будет все последовательные выводы, но это - интенсивный диск, я приложил Нулевое усилие для эффективности & сохранение использования ресурсов.
Имена Also:The будут Продвинуты вместе. Ожидайте, я не вижу FirstName LastName в этих данных. Я предполагаю, что они на самом деле существуют, но были опущены для простоты... Существует простая фиксация к этому, с помощью REGEX., где существует [a-z] [A-Z] в первом значении столбца, вставьте пространство
Работы с простофилей или nawk, но не mawk.
awk -F '[[:blank:]]*:[[:blank:]]*' '
BEGIN {print "<table><thead><tr><th>Name</th><th>Age</th><th>Tagid</th></tr></thead><tbody>"}
{
name = $2; getline
age = $2; getline
tagid = $2
print "<tr><td>" name "</td><td>" age "</td><td>" tagid "</td></tr>"
}
END {print "</tbody></table>"}
' Data.txt > Data.html
Это предполагает, что будет точно 3 строки для каждой записи, на имя порядка, возраст, tagid