从 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
假设我有以下文件:
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