2015-04-22 4 views
0

У меня есть файл в Unix, как этотПоиск уникальных значений в файле данных на основе двух столбцов

name1 text text 123432re text 
name2 text text 12344qp text 
name3 text text1 134234ts text 
name3 text text2 134234ts text 

Я хочу, чтобы найти все различные типы значений в 3-м столбце для всех имен пользователей, позволяет сказать, name1, name2 и name3.

Как показано ниже:

name1 1 
name2 1 
name3 2 

Как я могу получить нужный результат?

+4

это было задано много раз, и это довольно простой awk. что ты уже испробовал? – fedorqui

ответ

1

Если текст в столбцах до 4 столбца не может содержать пробелы, следующие должны делать это с gawk:

gawk '{++vals[$1][$3];} 
    END {for (u in vals) { 
     c = 0; 
     for (t in vals[u]) { ++c; }; 
     print u" "c;} 
}' yourfile 

(Примечание, gawk поддерживает многомерные массивы, в то время как стандарт awk не делает, поэтому то же решение не будет работать со стандартом awk.)

+0

Бесполезное использование награды кошки! Кроме того, awk не поддерживает 2D-массивы, поэтому это не сработает. –

+0

@Tom Fenech Спасибо, моя ошибка. Я не заметил, что вопрос был отмечен только как стандартный вопрос awk. Тем не менее, решение gawk также может оказаться полезным. –

+0

@lp_ Большое спасибо. Ваш gawk решил мое требование. Еще раз спасибо вам большое – user3744631

Смежные вопросы