awk - 粘贴命令留下空行

标签 awk paste cut

您好,我试图将多个文件(每个文件都有一列,但行数不同)粘贴在一起。

paste file1.txt file2.txt paste3.txt ... paste100 > out.txt

输入文件1:

A
B
C

输入文件2:

D
E

输入文件3:

F
G
H
I
J

输出:

A   D   F
B   E   G
C       H
        I
        J

当我从 out.txt 文件中剪切第 2 列(cut -f2)时,它为第 2 列提供了 3 个空行(可能是因为该列有 5 行,因此为了与第 3 列匹配,它创建了 2 个额外的空行)。第 1 列(减去 out.txt | cut -f1)也是如此,它给出了 2 个空行。知道为什么它显示空行吗?

少出.txt |剪切-f1

A
B
C
empty cell
empty cell

少出.txt |剪切-f2

D
E
empty cell
empty cell
empty cell

我期待看到-

第 1 列

A
B
C  

第 2 列

D
E

最佳答案

没有一行是空的,其中一些行只是没有填充所有字段,但它们仍然具有粘贴输出的字段分隔符(制表符)。 cut 无法知道您不希望打印空字段。

尝试:

awk -v f=1 -F'\t' '$f!=""{print $f}' file
awk -v f=2 -F'\t' '$f!=""{print $f}' file

相反。

关于awk - 粘贴命令留下空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26964717/

相关文章:

sed 用行号替换模式

linux - CSV grep 但保留标题

vba - 计算、复制和粘贴到 VBA 中的给定值

cordova - 使用 JS 在混合应用程序中禁用文本选择和复制粘贴

r - 如果满足条件,则循环将列粘贴在一起

shell - shell中使用sed声明变量

bash - 在 bash 中处理超出范围的整数

linux - 在 sed/awk/grep 中将日期从 2012-01-31 更改为 31-01-2012

bash - 使用 cut 和 grep 进行报告

Unix - sed 从第一个冒号后的行中获取值