我有一个文件如下
Id 123
Name john
Lastname udosen
Tel 123456
Id 124
Name james
Lastname david
Tel 19865
我如何打印文件如下
Id Name Lastname Tel
123 john udosen 123456
124 james david 19865
答案1
假设您想要制表符分隔的输出:
$ { printf '%s\n' Id Name Lastname Tel; sed 's/^[^[:blank:]]*.//' file; } | paste - - - -
Id Name Lastname Tel
123 john udosen 123456
124 james david 19865
这用于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
您还可以使用csvlook
(部分csvkit) 以类似的方式生成 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 |