从html格式化到输出



我是bash脚本的新手,我有html文件,我想读取该文件并显示到带有格式的终端中。

我的Html文件代码

<table>
<tr><th >Country Name</th><th >City1</th><th >City2</th><th>City3</th></tr>
<tr><td>CHINA</td><td>500</td><td>700</td><td>1200</td></tr>
<tr><td>USA</td><td>400</td><td>600</td><td>1000</td></tr>
</table>

如何格式化终端输出,我指的是它们在第1列和第2列之间的空格?

选项1:使用column格式化现有代码的输出

使用列工具为您格式化代码

$ cat test.sh 
#!/bin/bash
pre="<tr><td>"
post="</td></tr>"
mid="</td><td>"
cat myfile.html | grep "<td>" | sed -e "s/^$pre//g;s/$post$//g;s/$mid/ /g" | awk '{ sum=($2+$3+$4); printf $1  " %.0f n" ,sum}'
$ cat myfile.html 
<table>
<tr><th >Country Name</th><th >City1</th><th >City2</th><th>City3</th></tr>
<tr><td>CHINA</td><td>500</td><td>700</td><td>1200</td></tr>
<tr><td>USA</td><td>400</td><td>600</td><td>1000</td></tr>
</table>
$ ./test.sh | column -t
CHINA  2400
USA    2000

选项2:更新现有代码对printf的使用

如果我们知道最长的国家名称长度,我们可以告诉printf填充到它。只更改现有答案的awk部分(在这种情况下,告诉它填充到8个空格(:

grep "<td>" myfile.html 
| sed -e "s/^$pre//g;s/$post$//g;s/$mid/ /g" 
| awk '{ sum=($2+$3+$4); printf "%-08s %.0f n", $1, sum}'

我们得到输出:

CHINA    2400
USA      2000

最新更新