использование awk для переформатирования текста - PullRequest
0 голосов
/ 13 февраля 2020

У меня большой файл в этом формате (у меня есть и 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 или связанные программы?

1 Ответ

0 голосов
/ 25 марта 2020

Не идеальное решение. но мне удалось создать желаемый результат на основе предоставленного ввода.

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/
$
...