文件1:

1
2

文件2:
1 2 3
4 5

文件3:
x x x
yy yy
zz
paste file1 file2 file2给我一个制表符分隔的输出:
1       1 2 3   x x x
2       4 5     yy yy
                zz
paste -d" " file1 file2 file3给我输出:
1 1 2 3 x x x
2 4 5 yy yy
  zz

我想要如下所示:
1 1 2 3 x x x
2 4 5   yy yy
        zz

知道这是否可行还是应该尝试其他命令?

最佳答案

之后可以使用sed删除标签

 paste file file2 file3 | sed 's/\t/ /'

 1 1 2 3 x x x
 2 4 5   yy yy
         zz

这是一个通用的awk脚本,它将在任何数量的任何格式的文件上运行。
awk '
    {x=ARGIND;a[x]=a[x]>(b=length($0))?a[x]:b}
    {F[FNR,x]=$0}
    END{
            for(q=1;q<=FNR;q++)
            {
                    for(i=1;i<=ARGC;i++)
                    {
                    printf( "%-"a[i]"s ",F[q,i])
                    }print ""
            }
    }' file{1,2,3,4)

关于Bash粘贴命令输出格式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26466260/

10-13 08:45