0

我有一个这种格式的大文件(我有 csv 和文本格式,第一列是 ID):

9   KIDL1   1
9   KIDL1   1
9   KIDL2   0
9   KIDL2   1
9   KIDL3   1
9   KIDL3   1

并想将其更改为:

    KIDL1   KIDL2   KIDL3
9   1/1     0/1     1/1

是否可以使用 awk 命令或相关程序?

4

1 回答 1

0

不是完美的解决方案。但我设法根据提供的输入生成所需的输出。

awk '{a[$1" "$2]=$3"/"a[$1" "$2]} END {for (i in a)  {b=b" "i; c=c" "a[i];} {gsub(/ +[0-9]/, " ",b); gsub(/\/ +/, " ",c ) }  print b"\n"$1,c }'

演示:

$awk '{a[$1" "$2]=$3"/"a[$1" "$2]} END {for (i in a)  {b=b" "i; c=c" "a[i];} {gsub(/ +[0-9]/, " ",b); gsub(/\/ +/, " ",c ) }  print b"\n"$1,c }' < file1.txt

  KIDL1  KIDL2  KIDL3
9  1/1 1/0 1/1/
$
于 2020-03-25T05:23:32.843 回答