【发布时间】:2019-06-06 17:53:36
【问题描述】:
我有一个包含以下数据的文件
cat text.txt
281475473926267,46,47
281474985385546,310,311
281474984889537,248,249
281475473926267,16,17
281474985385546,20,28
281474984889537,112,68
第一列的值在某些地方重复 我想要下面给出的o/p
cat output.txt
281475473926267 16,17,46,47
281474985385546 20,28,310,311
281474984889537 68,112,248,249
它应该打印第 1 列的 uniq 值,然后是空格,然后它应该在一行中按升序打印另一列的相应值。
我在下面尝试过:
cat text.txt | perl -F, -lane ' $kv{$F[0]}{$F[1]}++; END { while(my($x,$y) = each(%kv)) { print "$x ",join(",",keys %$y) }}'
281474984889537 112,248
281474985385546 310,20
281475473926267 46,16
这里我无法打印第一列值前面的所有值
对于 281474984889537,它应该打印 68,112,248,249,但它只打印 112,248
我也不确定如何按升序排列它们。
cat text.txt | perl -F, -lane ' $kv{$F[0]}{$F[1]}++; END { while(my($x,$y) = each(%kv)) { print "$x ",join(",",keys %$y) }}'
281474984889537 112,248
281474985385546 310,20
281475473926267 46,16
这里我无法打印第一列值前面的所有值
【问题讨论】:
-
总是有 3 列吗?
-
是的。总是 3 列
-
可能会有更多的列,例如 281475473926267,46,47,12,13