格式化输出文本的列

格式化输出文本的列

我有3个文件

文件1:

compute-0-44
compute-0-2 
compute-0-7 
compute-0-8 

文件2:

0
11/29/2017 | 02:01:34
0
05/16/2018 | 08:47:56

文件3:

0
963
0
459

当我这样做时paste file1 file2 file 3,我得到:

compute-0-44    0       0
compute-0-2     11/29/2017 | 02:01:34   963
compute-0-7     0       0
compute-0-8     05/16/2018 | 08:47:56   459

我想要的是:

compute-0-44    0                       0
compute-0-2     11/29/2017 | 02:01:34   963
compute-0-7     0                       0 
compute-0-8     05/16/2018 | 08:47:56   459

可以用粘贴吗?如果有任何其他替代方案(例如 sed),也可以达到目的。

答案1

使用pr命令:

$ pr -mT file{1..3} | expand
compute-0-44            0                       0
compute-0-2             11/29/2017 | 02:01:34   963
compute-0-7             0                       0
compute-0-8             05/16/2018 | 08:47:56   459

man pr

   -m, --merge
          print all files in parallel, one in each column, truncate lines,
          but join lines of full length with -J

管道expand将制表符转换为空格 - 根据您的应用程序,您可能不需要它(我实际上只是在此处添加它以使输出在该站点上看起来格式正确)。

答案2

sed如果该行不包含竖线,您可以使用3 个选项卡替换第二个选项卡:

paste file{1..3} | sed '/|/!s/\t/\t\t\t/2'

相关内容