相同的3列,可变的第四列;在一行中打印相同的列,在第4行中将所有变量分隔为

时间:2019-05-22 18:56:18

标签: awk

我有一个文件,除最后一列外,其余各列可能相同。对于相同的列,我要打印一行具有相同列的行,并在最后一列中用逗号分隔它们对应的最后一列条目。

File1.txt

a   2   10  a
a   2   10  c
b   5   8   c
b   7   2   a
c   9   0   d
c   9   0   c
c   9   0   a

预期产量

a   2   10  a,c
b   5   8   c
b   7   2   a
c   9   0   d,c,a

我知道该怎么做(昏迷换行);但不是这个。

1 个答案:

答案 0 :(得分:0)

以下来自https://stackoverflow.com/users/10248678/oguz-ismail的答案非常有效。似乎答案以某种方式被删除了。因此,我将其发布

awk '{k=$1;for(i=2;i<=NF-1;++i) k=(k FS $i)} pk!=k{if(NR>1) print "";pk=k;printf "%s",$0;next} {printf ",%s",$NF} END{print ""}'