我有两列,但一列有 20 个数据,第二列有 16 个数据。所以我想让两列的长度相等。那么如何加零呢?我有一个像这样的文件:
1 2
3 4
4 5
7
8
8
因此第一列有 6 个元素,第二列有 3 个元素。所以我想通过在第二列中添加零来使两列相等。所以输出文件应该是这样的:
1 2
3 4
4 5
7 0
8 0
8 0
答案1
和awk
:
awk 'NF < 2 {$2 = 0}; 1' < file
0
如果给定记录中的字段数 ( NF
) 小于 2,则将第二个字段设置为。
请注意,对于没有字段的行(空行),这将给出" 0"
.相反,你可以这样做:
awk 'NF < 1 {$1 = 0}; NF < 2 {$2 = 0}; 1' < file
为了使这些行变为"0 0"
或:
awk 'NF && NF < 2 {$2 = 0}; 1' < file
保留那些空白行。
答案2
尝试这个,
awk -v OFS=" " '{if ($2=="") print $0,0; else print $0}' file
1 2
3 4
4 5
7 0
8 0
8 0
答案3
您可以awk
为此目的使用:
awk '{if (NF == 2) print $1 " " $2; else if (NF == 1) print $1 " 0";}' input_file.txt > output_file.txt
这将按行读取文件,并且对于所有具有两个“字段”(即以空格分隔的文本串)的行,打印这两个字段,但对于只有一个字段的所有行,打印该字段和一个“ 0”,其间有分隔空间。
请注意,此处未执行任何文本调整,并且我假设该文件仅包含具有一两个数字的行,因此此处不执行任何检查(尽管包含它们很容易)。任何没有一个或两个字段的行都将在输出中被忽略。