У меня есть файл, подобный этому:Подсчет вхождений букв в таблице с AWK
location1 person1 -
location2 person1 a
location3 person1 c
location2 person2 x
location1 person2 -
location3 person2 -
Каждый файл имеет несколько записей для каждого человека в разных местах (обратите внимание на порядок расположения не то же самое для каждого человека). Третья колонка - это буква или «-».
Я AWK чтение файла, и я хочу, чтобы получить результирующую таблицу следующим образом:
person location1 location2 location3
person1 0 1 1
person2 0 1 0
Где было письмо для человека и место, оно записывается как 1 в таблице, и если исходная таблица имела «-», то она записывается как 0 в таблице результатов.
Моя скромная попытка (не работает хорошо, но, по крайней мере, я думаю, что ассоциативный массив должен быть в коде где-то):
awk -F" " '{if($3!="-") a[$2]=$1} END {for (k in a) print k} file.txt
Вы всегда будете иметь 'location' 1-3 (или) 1-N? – sat
1-N, и может быть полезно учитывать случаи, когда люди не отображаются во всех местах. Например person3 может иметь только две строки, для location1 и location2 .. – HollowBastion