Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 基于其他列的信息创建新列_Bash_Shell - Fatal编程技术网

Bash 基于其他列的信息创建新列

Bash 基于其他列的信息创建新列,bash,shell,Bash,Shell,我有4列不同的位置,如下所示: Ica Ica Ica Ica Lima Ayacucho Ayacucho Ayacucho Lima Lima Ayacucho Ayacucho Lima Ayacucho Puno Ica Lima Lima Ayacucho Lima Ica Ayacucho Lima Ica Ica Ica Ica 1 Lima Ayacucho Ayacucho Ayacucho 2 Lima Lima Ayacucho Ayacucho 2 Lima A

我有4列不同的位置,如下所示:

Ica Ica Ica Ica 
Lima Ayacucho Ayacucho Ayacucho 
Lima Lima Ayacucho Ayacucho 
Lima Ayacucho Puno Ica 
Lima Lima Ayacucho
Lima Ica Ayacucho Lima
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行中没有最后一列的位置

我想做的是创建一个新列,它告诉我们每行有多少个不同的位置。例如,第一行的所有列的位置都相同。所以我想有一个新的列,里面有数字1

它应该是这样的:

Ica Ica Ica Ica 
Lima Ayacucho Ayacucho Ayacucho 
Lima Lima Ayacucho Ayacucho 
Lima Ayacucho Puno Ica 
Lima Lima Ayacucho
Lima Ica Ayacucho Lima
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行缺少一个值,即最后一列,所以我不希望有任何数字


谢谢你的帮助。

虽然不是最优雅的,但它确实起到了作用:

awk '{
  delete cols
  for (i = 1; i <= NF; i++)
    cols[$i]
  printf "%s%s\n", $0, NF == 4 ? " " length(cols) : ""
}' input-file.txt
awk'{
删除列

对于(i=1;我已经给出了答案,只有当我所在的地区不同时才能解决我的问题。如果它们都有相同的名称,我希望在新列中有一个数字“1”,而不是一个“4”。很抱歉,我现在用标记为重复,我发现它不够准确。重新打开。