我可以使用 bash 脚本将文本文件更改为带有网格线的电子表格吗?

我可以使用 bash 脚本将文本文件更改为带有网格线的电子表格吗?

我有以下信息,我希望它看起来像在带有标题的电子表格中。

cat TEXT-FILE.txt

SOMETHING5 : 11111111 : 1969-08-12 : 42.34
SOMETHING4 : 22222222 : 1969-08-12 : 700.12
SOMETHING3 : 333333333 : 1969-08-12 : 300.2
SOMETHING2 : 44444444444 : 1969-08-12 : 200.2
SOMETHING1 : 5555555555 : 1969-08-12 : 100.34

这是我对脚本的了解

#!/bin/bash

for file in ./TEST-FILE.txt
do
        sed -i -e "s/:/|/g" $file
        sed -i '1iIdentify | Misc | Date | Amount | Confirmation ' $file
done

现在的输出是:

Identify | Misc | Date | Amount | Confirmation
SOMETHING5 | 11111111 | 1969-08-12 | 42.34
SOMETHING4 | 22222222 | 1969-08-12 | 700.12
SOMETHING3 | 333333333 | 1969-08-12 | 300.2
SOMETHING2 | 44444444444 | 1969-08-12 | 200.2
SOMETHING1 | 5555555555 | 1969-08-12 | 100.34

我不确定如何使行匹配,确认列也是空白的,因为这最终将手动输入信息。

长话短说 - 我希望这个输出看起来像一个合适的电子表格,包括网格线。我发现没有其他问题可以准确回答我想要做的事情。

答案1

我不确定如何使线条匹配

看一下column

原始文件

$ cat columns.txt 
Identify | Misc | Date | Amount | Confirmation
SOMETHING5 | 11111111 | 1969-08-12 | 42.34
SOMETHING4 | 22222222 | 1969-08-12 | 700.12
SOMETHING3 | 333333333 | 1969-08-12 | 300.2
SOMETHING2 | 44444444444 | 1969-08-12 | 200.2
SOMETHING1 | 5555555555 | 1969-08-12 | 100.34

带立柱

$ column -t columns.txt 
Identify    |  Misc         |  Date        |  Amount  |  Confirmation
SOMETHING5  |  11111111     |  1969-08-12  |  42.34
SOMETHING4  |  22222222     |  1969-08-12  |  700.12
SOMETHING3  |  333333333    |  1969-08-12  |  300.2
SOMETHING2  |  44444444444  |  1969-08-12  |  200.2
SOMETHING1  |  5555555555   |  1969-08-12  |  100.34

从上面可以看出,使用列可以使输出很好地对齐,并且空白Confirmation列确实是,嗯,明显是空白的!

在线手册页这里


我希望这个输出看起来像一个正确的电子表格

如果你想让事情变得均匀更多的类似电子表格,我建议你看看Python和beautifultable模块

使用上面的内容,您可以(相当简单)获得如下输出:

+----------+------+--------+
|   name   | rank | gender |
+----------+------+--------+
|  Jacob   |  1   |  boy   |
+----------+------+--------+
| Isabella |  1   |  girl  |
+----------+------+--------+
|  Ethan   |  2   |  boy   |
+----------+------+--------+
|  Sophia  |  2   |  girl  |
+----------+------+--------+
| Michael  |  3   |  boy   |
+----------+------+--------+

相关内容