Добавить HTML на каждый символ построчно - PullRequest
0 голосов
/ 12 июня 2019

У меня есть файл CSV, и я читаю файл построчно.

Допустим, строка гласит:

10h50 10 15 20 

Я бы хотел получить:

<tr> <th scope="row">10h50</th> <td>10</td> <td>15</td> <td>20</td> </tr>

Я что-то начал, но не уверен, что это лучший способ. У меня есть файл result.csv с:

 10h50,10,15,20
 10h51,11,15,22
 10h52,12,16,30

Идея была:

cat result.csv | sed 's/,/ /g' > temp.csv

Тогда:

awk '{print $1}' temp.csv > time.csv
awk '{print $2}' temp.csv > col1.csv
awk '{print $3}' temp.csv > col2.csv
awk '{print $4}' temp.csv > col3.csv

Вкл. time.csv

cat time.csv | sed 's/^/<tr> <th scope="row">/' | sed 's/$/<\/th> <\/tr>/' > new_time.csv
cat col1.csv | sed 's/^/<td>/' | sed 's/$/<\/td>' > new_col1.csv
cat col2.csv | sed 's/^/<td>/' | sed 's/$/<\/td>' > new_col2.csv
cat col3.csv | sed 's/^/<td>/' | sed 's/$/<\/td>' > new_col3.csv

затем:

paste new_date.csv new_col1.csv new_col2.csv new_col3.csv | column -s $'\t' -t > final_result.csv 

Любой совет?

Ответы [ 2 ]

1 голос
/ 13 июня 2019

В awk:

#! /usr/bin/env awk -F, -f
BEGIN {f="<tr> <th scope="row">%s</th> <td>%d</td> <td>%d</td> <td>%d</td> </tr>\n"}
{printf f, $1, $2, $3, $4}

дать разрешение на выполнение и вызвать как

myscript file.csv

1 голос
/ 13 июня 2019

Если вы не возражаете против цикла / использования скрипта, это довольно просто.

С вводом csv result.csv:

10h50,10,15,20
10h51,11,15,22
10h52,12,16,30

и скриптом bash:

#!/bin/bash
while IFS=, read -r col1 col2 col3 col4 || [ -n "$col1" ];
do
    echo "<tr> <th scope=\"row\">$col1</ht> <td>$col2</td> <td>$col3</td> <td>$col4</td> </tr>"
done < result.csv

Вы получите результат:

<tr> <th scope="row">10h50</ht> <td>10</td> <td>15</td> <td>20</td> </tr>
<tr> <th scope="row">10h51</ht> <td>11</td> <td>15</td> <td>22</td> </tr>
<tr> <th scope="row">10h52</ht> <td>12</td> <td>16</td> <td>30</td> </tr>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...