从 linux 中的多列创建 table,但将字段 2、3(可能还有 4)视为一列

Create table from multiple columns in linux, but treat fields 2, 3 (and possibly 4) as one column

假设我有以下文件:

al.pacino Al Pacino
jerry.seinfeld     Jerry Seinfeld
chad.murray   Chad Michael Murray

我想创建一个只有两列的漂亮 table,并将第一个 name/middle name/last 名称视为一列,如下所示:

al.pacino       Al Pacino
jerry.seinfeld  Jerry Seinfeld
chad.murray     Chad Michael Murray

问题是,如果我使用 "column -t" 命令,每个字段将被视为一个单独的列,这不是我想要的:

al.pacino       Al     Pacino
jerry.seinfeld  Jerry  Seinfeld
chad.murray     Chad   Michael   Murray

使用 sed 在两列之间插入一个制表符 - 将此单行输入输入标准输入 - 输出将是两个制表符分隔的列

sed -r 's/ +/\t/'

我设法用 AWK 做到了,通过读取两个变量的内容(第一个是登录名,第二个是全名):

awk 'NR==FNR { a[FNR] = [=10=] ; if (length > max) max = length ; next } { printf "%-*s  %s\n", max, a[FNR], [=10=] }' <(echo "${login_names}") <(echo "${full_names}")

结果是一个漂亮、干净的 table 无论名称的长度有多么不同:

christopher.reeve     Christopher Reeve
al.pacino             Al Pacino
jerry.seinfeld        Jerry Seinfeld
benedict.cumberbatch  Benedict Cumberbatch
chad.murray           Chad Michael Murray