【问题标题】:How do I replace new line and space in <tr> <td>?如何替换 <tr> <td> 中的新行和空格?
【发布时间】:2018-01-30 06:20:31
【问题描述】:

我需要在表格 (html) 中创建日历,使用 &lt;tr&gt; &lt;td&gt; &lt;th&gt; 替换 bash 脚本中的空格和新行。

我使用这个代码:

cal | sed -e 's/ /<td>/g' >> "file.html"
cat "file.html" | sed 's/\n/<tr>/g' >> "file.html"

我该如何解决这个问题?在 html 站点中,结果显示在一行中。

我需要这个日历在终端中的样子:

Январь 2018
Вс Пн Вт Ср Чт Пт Сб
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

我在 html 文件中有这个结果:http://screenshot.ru/upload/image/aIQK

【问题讨论】:

  • 那是无效的 HTML。您需要用&lt;/td&gt;&lt;tr&gt; 替换每个空格,用&lt;/tr&gt;&lt;tr&gt; 替换每个换行符。
  • 另外,您需要第二次重定向到一个不同的文件(使用&gt;,而不是&gt;&gt;),否则会被复制。
  • 在代码中的样子?
  • 当我编写代码 html 并在这段代码之前和之后粘贴时,我也会创建两个文件

标签: html bash sed replace


【解决方案1】:

使用 GNU sed 和 BSD 校准:

LC_ALL=en_US.UTF-8 cal -h | sed '1{s|^|<html><table>\n<tr><th colspan="7">|;s|$|</th></tr>|};2,${s|\(..\) |<td>\1</td>|g;s|^|<tr>|;s|$|</tr>|};$s|$|\n</table></html>|'

-h: 关闭今天的突出显示

输出:

<html><table>
<tr><th colspan="7">    January 2018      </th></tr>
<tr><td>Su</td><td>Mo</td><td>Tu</td><td>We</td><td>Th</td><td>Fr</td><td>Sa</td> </tr>
<tr><td>  </td><td> 1</td><td> 2</td><td> 3</td><td> 4</td><td> 5</td><td> 6</td> </tr>
<tr><td> 7</td><td> 8</td><td> 9</td><td>10</td><td>11</td><td>12</td><td>13</td> </tr>
<tr><td>14</td><td>15</td><td>16</td><td>17</td><td>18</td><td>19</td><td>20</td> </tr>
<tr><td>21</td><td>22</td><td>23</td><td>24</td><td>25</td><td>26</td><td>27</td> </tr>
<tr><td>28</td><td>29</td><td>30</td><td>31</td><td>  </td><td>  </td><td>  </td> </tr>
<tr><td>  </td><td>  </td><td>  </td><td>  </td><td>  </td><td>  </td><td>  </td> </tr>
</table></html>

【讨论】:

  • 感谢它有效。我需要用 body html 创建一个文件,然后在 bash 之前和之后粘贴该代码吗?
猜你喜欢
  • 2018-07-09
  • 2020-01-02
  • 1970-01-01
  • 2013-01-16
  • 2014-11-07
  • 1970-01-01
  • 2012-09-25
  • 2011-02-13
  • 2021-09-14
相关资源
最近更新 更多