Bash 粘贴命令输出格式

标签 bash paste

文件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/

相关文章:

Linux sed 不替换逗号

vim - 如何在 Vim 中删除(想要的文本)、删除(不想要的文本)和粘贴(想要的文本)

r - sprintf ("%03d", 7) 功能的解释?

bash - 将 csv 文件中的第一列从时间戳转换为年月格式

linux - 如何在 Jenkins 上配置多个 shell 脚本并在不等待其他脚本的情况下运行它们

linux - 故障安全 wget html 脚本? (当用户使用 ~\.wgetrc 时)

linux - 在终端 Vim ( :set paste vs <c-r>* vs . ) 中粘贴代码。

c# - Telerik GridView 粘贴

R 使用分隔符动态粘贴值

linux - 在 Shell 中从配置文件中读取变量