我有一个文件如下
Id 123
Name john
Lastname udosen
Tel 123456
Id 124
Name james
Lastname david
Tel 19865
Run Code Online (Sandbox Code Playgroud)
我如何打印文件如下
Id Name Lastname Tel
123 john udosen 123456
124 james david 19865
Run Code Online (Sandbox Code Playgroud)
假设您想要制表符分隔的输出:
$ { printf '%s\n' Id Name Lastname Tel; sed 's/^[^[:blank:]]*.//' file; } | paste - - - -
Id Name Lastname Tel
123 john udosen 123456
124 james david 19865
Run Code Online (Sandbox Code Playgroud)
这用于sed
删除每行(标题)上最初的空格或制表符分隔的单词。它将结果提供给格式,paste
并将其格式化为四个制表符分隔的列。通过首先使用 输出来添加标头printf
。
您想要美观(对齐)的输出,然后用于column
生成表格。在这里,我告诉在列之间paste
插入;
,然后使用它们来column
对齐字段:
$ { printf '%s\n' Id Name Lastname Tel; sed 's/^[^[:blank:]]*.//' file; } | paste -d ';' - - - - | column -t -s ';'
Id Name Lastname Tel
123 john udosen 123456
124 james david 19865
Run Code Online (Sandbox Code Playgroud)
您还可以使用( csvkitcsvlook
的一部分)以类似的方式生成 Markdown 格式的表格:
$ { printf '%s\n' Id Name Lastname Tel; sed 's/^[^[:blank:]]*.//' file; } | paste -d ';' - - - - | csvlook -I -d ';'
| Id | Name | Lastname | Tel |
| --- | ----- | -------- | ------ |
| 123 | john | udosen | 123456 |
| 124 | james | david | 19865 |
Run Code Online (Sandbox Code Playgroud)