How do I replace new line and space in ?

2019-08-19 18:07发布

问题:

I need to create calendar in table (html) use <tr> <td> <th> replace space and new line in bash script.

I use this code:

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

How can I fix this? In the html site, the result looks in one line.

I need this calendar looks like in the terminal:

Январь 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

and i have this result in html file :http://screenshot.ru/upload/image/aIQK

回答1:

With GNU sed and BSD cal:

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: Turns off highlighting of today

Output:

<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>