我有一个这种格式的大文件(我有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 命令或相关程序?
不是完美的解决方案。 但我设法根据提供的输入生成所需的输出。
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/
$