Kou*_*rev 1 bash awk whitespace tabs
我有一个制表符分隔的文件,由 7 列组成。
ABC 1437 1 0 71 15.7 174.4
DEF 0 0 0 1 45.9 45.9
GHIJ 2 3 0 9 1.1 1.6
Run Code Online (Sandbox Code Playgroud)
我需要的是用可变数量的空格字符替换制表符,以保持列对齐。请注意,我不希望每个选项卡都被 8 个空格替换。相反,我想要第 1 行第 1 列(8 - 长度(ABC)= 5)之后的 5 个空格,第 1 行第 2 列之后的 4 个空格(8 - 长度(1437)= 4)等。
是否有 linux 工具可以为我做这件事,还是我应该自己编写?
该POSIX实用PR称为pr -e -t不正是你想要什么,据我所知是存在于每个UNIX安装。
$ cat file
ABC 1437 1 0 71 15.7 174.4
DEF 0 0 0 1 45.9 45.9
GHIJ 2 3 0 9 1.1 1.6
$ pr -e -t file
ABC 1437 1 0 71 15.7 174.4
DEF 0 0 0 1 45.9 45.9
GHIJ 2 3 0 9 1.1 1.6
Run Code Online (Sandbox Code Playgroud)
并且选项卡显示为^Is:
$ cat -ET file
ABC^I1437^I1^I0^I71^I15.7^I174.4$
DEF^I0^I0^I0^I1^I45.9^I45.9$
GHIJ^I2^I3^I0^I9^I1.1^I1.6$
$ pr -e -t file | cat -ET
ABC 1437 1 0 71 15.7 174.4$
DEF 0 0 0 1 45.9 45.9$
GHIJ 2 3 0 9 1.1 1.6$
Run Code Online (Sandbox Code Playgroud)