首页 > 解决方案 > 从conf文件准备html表

问题描述

我有像 conf.txt 这样的 conf 文件,下一个值

var=somevalue1
var1=somevalue2
var2=somevalue3
var3=http://somevalue1

这个想法是将其准备成带有表格的HTML页面

 <tr>
    <td>var</td>
    <td>somevalue1</td>
  </tr>
 <tr>
    <td>var3</td>
    <td><a href="http://somevalue1">http://somevalue1</a></td>
  </tr>

问题是 - 最好的方法是用什么来准备它?

所以我可以使用 readarray 从文件中读取,然后使用 awk 之类的东西来拆分它。不幸的是,我在 powershell 方面做得很好,但在 bash 方面真的很差。

你能给一些建议或例子吗?

我打算把这个放到var中,然后把这个var放到EOF中来创建一个页面

标签: bash

解决方案


假设:

  • 只需要担心 2x 数据类型... 1)基本变量和2) URL
  • 所有 URL 数据都以字符串开头http
  • 数据可能包含嵌入的等号

样本数据:

$ cat conf.dat
var=somevalue1
var1=somevalue2
var2=somevalue3
var2x=somevalue3=345                        # value includes embedded "="
var3=http://somevalue1
var4=http://somevalue1/index.html&id=35     # value includes embedded "="

一个awk想法:

awk -F'=' '
             { newvalue=""                         # in case value includes embedded equal signs ...
               sep=""
               for (i=2;i<=NF;i++) {               # loop through fields 2 thru NF ...
                   newvalue = newvalue sep $(i)    # appending to new "=" delimited string
                   sep=FS
               }
             }

$2 ~ /^http/ { print "<tr>\n\t<td>" $1 "</td>\n\t<td><a href=\"" newvalue "\">" newvalue "</a></td>\n</tr>\n"
               next
             }

             { print "<tr>\n\t<td>" $1 "</td>\n\t<td>" newvalue "</td>\n</tr>\n" }

' conf.dat

这会产生:

<tr>
        <td>var</td>
        <td>somevalue1</td>
</tr>

<tr>
        <td>var1</td>
        <td>somevalue2</td>
</tr>

<tr>
        <td>var2</td>
        <td>somevalue3</td>
</tr>

<tr>
        <td>var2x</td>
        <td>somevalue3=345</td>
</tr>

<tr>
        <td>var3</td>
        <td><a href="http://somevalue1">http://somevalue1</a></td>
</tr>

<tr>
        <td>var4</td>
        <td><a href="http://somevalue1/index.html&id=35">http://somevalue1/index.html&id=35</a></td>
</tr>

推荐阅读