简体   繁体   English

用bash将txt文件分块为html表

[英]Chunk txt file into an html table with bash

I have a ~600 line .txt file, all.txt. 我有一个〜600行的.txt文件all.txt。 I want to turn it into an HTML table with two columns where the first column contains the entire contents of all.txt with exactly five lines in each row (so the table would have about 120 rows total). 我想将其转换为具有两列的HTML表,其中第一列包含all.txt的全部内容,每行中恰好有五行(因此该表总共约有120行)。 Here's what I have so far: 这是我到目前为止的内容:

#!/bin/bash
A=10
B=5
len=`wc -l < all.txt`
len2=$((len / 5))

while [ $A -le $len2 ]; do
    head -$A all.txt | tail -$B |
    awk '
    BEGIN{print " "} 
    {printf("<tr><td></td><td></td></tr>\n")}
    END{print " "}
    '
    let A+=5
done

As you can see, this is really just a shell of a script, and I'm not sure what to with awk inside the loop. 如您所见,这实际上只是脚本的外壳,而且我不确定在循环内使用awk怎么办。 Is using awk inside a control structure like this even the best way to do it? 在这样的控制结构内部使用awk甚至是最好的方法吗? Is bash even a reasonable way to do it? bash甚至是合理的方式吗?

sed alternative sed替代

 $ sed -e '5~5a</td>\n<td></td>\n</tr>' -e '1~5i<tr>\n<td>' <(seq 15)

<tr>
<td>
1
2
3
4
5
</td>
<td></td>
</tr>
<tr>
<td>
6
7
8
9
10
</td>
<td></td>
</tr>
<tr>
<td>
11
12
13
14
15
</td>
<td></td>
</tr>

You properly only need awk: 您只需要awk即可:

awk 'NR%5 == 1{printf "%s<tr><td>", NR > 1 ? "</td><td></td></tr>" : ""}1' all.txt

Might need to add END{print "</td><td></td></tr>"} at the end. 可能需要在末尾添加END{print "</td><td></td></tr>"}

删除<div> a里面的标签<div id="text_translate"><p>目标是仅当 HTML 文件中的&lt;div&gt;和&lt;/div&gt;实例位于&lt;table&gt;和&lt;/table&gt;之间时才删除它们。 &lt;table&gt;...&lt;/table&gt;标签之外的所有&lt;div&gt;...&lt;/div&gt;标签都将保留。 &lt;table&gt;...&lt;/table&gt;内的&lt;div&gt;...&lt;/div&gt;标签内的内容也将保留。</p><p> 其他挑战:</p><ul><li> 文件中可能有多个表。</li><li> 表格内可能有多个&lt;div&gt;...&lt;/div&gt;标签。</li><li> 表格外可能有多个&lt;div&gt;...&lt;/div&gt;标签。</li><li> HTML 可能已格式化或全部在一行上。</li><li> 它必须是 Bash 解决方案。</li></ul><p> 例子:</p><p> (这个 HTML 并不完美,因为我们从中提取它的系统无法控制输出)</p><pre> &lt;:DOCTYPE html&gt; &lt;html lang="en"&gt; &lt;head&gt; &lt;title&gt;text&lt;/title&gt; &lt;meta charset="utf-8" /&gt; &lt;/head&gt; &lt;body&gt; &lt;div&gt; &lt;h1&gt;text&lt;/h1&gt; &lt;p&gt;&lt;strong&gt;text&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;text&lt;/li&gt; &lt;li&gt;text&lt;/li&gt; &lt;li&gt;text&lt;/li&gt; &lt;/ul&gt; &lt;/div&gt; &lt;table&gt; &lt;thead&gt; &lt;tr&gt; &lt;th&gt;text&lt;/th&gt; &lt;th&gt;text&lt;/th&gt; &lt;th&gt;text&lt;/th&gt; &lt;/tr&gt; &lt;/thead&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt; &lt;div&gt;text&lt;br /&gt;&lt;/div&gt; &lt;/td&gt; &lt;td&gt;text&lt;/td&gt; &lt;td&gt;789&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; &lt;div&gt; &lt;span style="display: inline !important"&gt;text&lt;/span&gt;&lt;br /&gt; &lt;/div&gt; &lt;/td&gt; &lt;td&gt;text&lt;/td&gt; &lt;td&gt;456&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; &lt;div&gt;text&lt;br /&gt;&lt;/div&gt; &lt;/td&gt; &lt;td&gt;text&lt;/td&gt; &lt;td&gt;123&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;/body&gt; &lt;/html&gt;</pre><p> 结果:</p><pre> &lt;:DOCTYPE html&gt; &lt;html lang="en"&gt; &lt;head&gt; &lt;title&gt;text&lt;/title&gt; &lt;meta charset="utf-8" /&gt; &lt;/head&gt; &lt;body&gt; &lt;div&gt; &lt;h1&gt;text&lt;/h1&gt; &lt;p&gt;&lt;strong&gt;text&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;text&lt;/li&gt; &lt;li&gt;text&lt;/li&gt; &lt;li&gt;text&lt;/li&gt; &lt;/ul&gt; &lt;/div&gt; &lt;table&gt; &lt;thead&gt; &lt;tr&gt; &lt;th&gt;text&lt;/th&gt; &lt;th&gt;text&lt;/th&gt; &lt;th&gt;text&lt;/th&gt; &lt;/tr&gt; &lt;/thead&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt; text&lt;br /&gt; &lt;/td&gt; &lt;td&gt;text&lt;/td&gt; &lt;td&gt;789&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; &lt;span style="display: inline !important"&gt;text&lt;/span&gt;&lt;br /&gt; &lt;/td&gt; &lt;td&gt;text&lt;/td&gt; &lt;td&gt;456&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; text&lt;br /&gt; &lt;/td&gt; &lt;td&gt;text&lt;/td&gt; &lt;td&gt;123&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;/body&gt; &lt;/html&gt;</pre><p> 我可以找到很多例子:</p><ul><li> 删除标签(显然),但这也会删除表格之外的标签</li><li>删除标签集,同时保留其中的内容,但这也会删除表格之外的内容</li><li> Accomplishing this with JavaScript (I need to use Bash or something easily called from Bash like sed, awk or Perl)</li></ul><p> ...但到目前为止还没有找到解决方案。</p><p> 感谢您提供任何帮助或为我指明正确的方向。</p></div>在 HTML 文件中使用 Bash<table> </table></div> - Delete <div> tags inside a <table> in an HTML file using Bash

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 将txt文件读入HTML表 - Read txt file into HTML table 如何在.txt文件中保存Html表数据? - How to save Html table data in .txt file? 如何使用php在.txt文件中编写html表 - how to write html table in .txt file using php 如何将数据从txt文件拉入HTML表Java / JSP - How to pull data from a txt file into a HTML table Java/JSP 使用 PHP 从 .txt 文件构建 HTML 动态表 - Build HTML dynamic table from .txt file using PHP 如何将 html 表导出到 .txt 文件? - How do I export a html table to a .txt file? SongOrganzier不会将歌曲添加到txt文件或HTML表 - SongOrganzier Isnt Adding Song To txt File or Html Table 将.txt文件作为html插入 - Inserting .txt file as html HTML JS PHP文件块上传 - HTML JS PHP File chunk upload 删除<div> a里面的标签<div id="text_translate"><p>目标是仅当 HTML 文件中的&lt;div&gt;和&lt;/div&gt;实例位于&lt;table&gt;和&lt;/table&gt;之间时才删除它们。 &lt;table&gt;...&lt;/table&gt;标签之外的所有&lt;div&gt;...&lt;/div&gt;标签都将保留。 &lt;table&gt;...&lt;/table&gt;内的&lt;div&gt;...&lt;/div&gt;标签内的内容也将保留。</p><p> 其他挑战:</p><ul><li> 文件中可能有多个表。</li><li> 表格内可能有多个&lt;div&gt;...&lt;/div&gt;标签。</li><li> 表格外可能有多个&lt;div&gt;...&lt;/div&gt;标签。</li><li> HTML 可能已格式化或全部在一行上。</li><li> 它必须是 Bash 解决方案。</li></ul><p> 例子:</p><p> (这个 HTML 并不完美,因为我们从中提取它的系统无法控制输出)</p><pre> &lt;:DOCTYPE html&gt; &lt;html lang="en"&gt; &lt;head&gt; &lt;title&gt;text&lt;/title&gt; &lt;meta charset="utf-8" /&gt; &lt;/head&gt; &lt;body&gt; &lt;div&gt; &lt;h1&gt;text&lt;/h1&gt; &lt;p&gt;&lt;strong&gt;text&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;text&lt;/li&gt; &lt;li&gt;text&lt;/li&gt; &lt;li&gt;text&lt;/li&gt; &lt;/ul&gt; &lt;/div&gt; &lt;table&gt; &lt;thead&gt; &lt;tr&gt; &lt;th&gt;text&lt;/th&gt; &lt;th&gt;text&lt;/th&gt; &lt;th&gt;text&lt;/th&gt; &lt;/tr&gt; &lt;/thead&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt; &lt;div&gt;text&lt;br /&gt;&lt;/div&gt; &lt;/td&gt; &lt;td&gt;text&lt;/td&gt; &lt;td&gt;789&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; &lt;div&gt; &lt;span style="display: inline !important"&gt;text&lt;/span&gt;&lt;br /&gt; &lt;/div&gt; &lt;/td&gt; &lt;td&gt;text&lt;/td&gt; &lt;td&gt;456&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; &lt;div&gt;text&lt;br /&gt;&lt;/div&gt; &lt;/td&gt; &lt;td&gt;text&lt;/td&gt; &lt;td&gt;123&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;/body&gt; &lt;/html&gt;</pre><p> 结果:</p><pre> &lt;:DOCTYPE html&gt; &lt;html lang="en"&gt; &lt;head&gt; &lt;title&gt;text&lt;/title&gt; &lt;meta charset="utf-8" /&gt; &lt;/head&gt; &lt;body&gt; &lt;div&gt; &lt;h1&gt;text&lt;/h1&gt; &lt;p&gt;&lt;strong&gt;text&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;text&lt;/li&gt; &lt;li&gt;text&lt;/li&gt; &lt;li&gt;text&lt;/li&gt; &lt;/ul&gt; &lt;/div&gt; &lt;table&gt; &lt;thead&gt; &lt;tr&gt; &lt;th&gt;text&lt;/th&gt; &lt;th&gt;text&lt;/th&gt; &lt;th&gt;text&lt;/th&gt; &lt;/tr&gt; &lt;/thead&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt; text&lt;br /&gt; &lt;/td&gt; &lt;td&gt;text&lt;/td&gt; &lt;td&gt;789&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; &lt;span style="display: inline !important"&gt;text&lt;/span&gt;&lt;br /&gt; &lt;/td&gt; &lt;td&gt;text&lt;/td&gt; &lt;td&gt;456&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt; text&lt;br /&gt; &lt;/td&gt; &lt;td&gt;text&lt;/td&gt; &lt;td&gt;123&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;/body&gt; &lt;/html&gt;</pre><p> 我可以找到很多例子:</p><ul><li> 删除标签(显然),但这也会删除表格之外的标签</li><li>删除标签集,同时保留其中的内容,但这也会删除表格之外的内容</li><li> Accomplishing this with JavaScript (I need to use Bash or something easily called from Bash like sed, awk or Perl)</li></ul><p> ...但到目前为止还没有找到解决方案。</p><p> 感谢您提供任何帮助或为我指明正确的方向。</p></div>在 HTML 文件中使用 Bash<table> </table></div> - Delete <div> tags inside a <table> in an HTML file using Bash
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM