我有4个不同位置的列,如下所示:
Ica Ica Ica Ica
Lima Ayacucho Ayacucho Ayacucho
Lima Lima Ayacucho Ayacucho
Lima Ayacucho Puno Ica
Lima Lima Ayacucho
Lima Ica Ayacucho Lima
有时缺少某些位置,例如在第5行中没有最后一列的位置。
我想要做的是创建一个新列,告诉每行有多少个不同的位置。例如,第一行对于所有列具有相同的位置。所以我想要一个新的列,其中包含数字1。
看起来应该是这样的:
Ica Ica Ica Ica 1
Lima Ayacucho Ayacucho Ayacucho 2
Lima Lima Ayacucho Ayacucho 2
Lima Ayacucho Puno Ica 4
Lima Lima Ayacucho
Lima Ica Ayacucho Lima 3
请注意,因为第5行有一个缺失值,即最后一列,我不想要任何数字。
感谢您的帮助。
答案 0 :(得分:0)
不是最优雅,但它确实起作用:
awk '{
delete cols
for (i = 1; i <= NF; i++)
cols[$i]
printf "%s%s\n", $0, NF == 4 ? " " length(cols) : ""
}' input-file.txt