2017-01-10 2 views
-1

я получаю выход из конкретного приложения в следующем формате:Linux: подсчет уникальных значений в конкретной области и переписывание линии

47114 test RUN test_medium_ciara fea-admin ciara08:ciara08:ciara08:ciara08:ciara08:ciara08:ciara08:ciara08:ciara02:ciara02:ciara02:ciara02:ciara02:ciara02:ciara02:ciara02 rw   01/10-11:12:23 default 000:30:54.00 11162 0  24133,24134,24136,24177,24248,248 

И я хочу, чтобы подсчитать уникальные значения от 6 поля:

ciara08:ciara08:... 

Пример выходных

47114 test RUN test_medium_ciara fea-admin 2 rw   01/10-11:12:23 default 000:30:54.00 11162 0  24133,24134,24136,24177,24248,248 

РЕДАКТИРОВАТЬ:

47117 test RUN abaqus_medium fea-admin r50n12:r50n12:r50n12:r50n12:r50n12:r50n12:r50n12:r50n12:r50n12:r50n12:r50n12:r50n12:r50n12:r50n12:r50n12:r50n12:r50n12:r50n12:r50n12:r50n12:r50n01:r50n01:r50n01:r50n01:r50n01:r50n01:r50n01:r50n01:r50n01:r50n01:r50n01:r50n01:r50n01:r50n01:r50n01:r50n01:r50n01:r50n01:r50n01:r50n01:r50n08:r50n08:r50n08:r50n08:r50n08:r50n08:r50n08:r50n08:r50n08:r50n08:r50n08:r50n08:r50n08:r50n08:r50n08:r50n08:r50n08:r50n08:r50n08:r50n08:r50n09:r50n09:r50n09:r50n09:r50n09:r50n09:r50n09:r50n09:r50n09:r50n09:r50n09:r50n09:r50n09:r50n09:r50n09:r50n09:r50n09:r50n09:r50n09:r50n09 mox  01/10-11:37:10 default 008:17:45.00 18025 21239 78836,78840,78842,78852,78880,78935,78938,78951,78939,78940,78941,78942 
47123 test RUN abaqus_medium fea-admin r50n10:r50n10:r50n10:r50n10:r50n10:r50n10:r50n10:r50n10:r50n10:r50n10:r50n10:r50n10:r50n10:r50n10:r50n10:r50n10:r50n10:r50n10:r50n10:r50n10:r50n06:r50n06:r50n06:r50n06:r50n06:r50n06:r50n06:r50n06:r50n06:r50n06:r50n06:r50n06:r50n06:r50n06:r50n06:r50n06:r50n06:r50n06:r50n06:r50n06:r50n07:r50n07:r50n07:r50n07:r50n07:r50n07:r50n07:r50n07:r50n07:r50n07:r50n07:r50n07:r50n07:r50n07:r50n07:r50n07:r50n07:r50n07:r50n07:r50n07 td42  01/10-12:09:47 default 000:00:01.00 61  607 181931,181935,181937,181945,181975,181982 01/10-12:09:49 - 
47117 test RUN abaqus_medium fea-admin r50n12:r50n12:r50n12:r50n12:r50n12:r50n12:r50n12:r50n12:r50n12:r50n12:r50n12:r50n12:r50n12:r50n12:r50n12:r50n12:r50n12:r50n12:r50n12:r50n12:r50n01:r50n01:r50n01:r50n01:r50n01:r50n01:r50n01:r50n01:r50n01:r50n01:r50n01:r50n01:r50n01:r50n01:r50n01:r50n01:r50n01:r50n01:r50n01:r50n01:r50n08:r50n08:r50n08:r50n08:r50n08:r50n08:r50n08:r50n08:r50n08:r50n08:r50n08:r50n08:r50n08:r50n08:r50n08:r50n08:r50n08:r50n08:r50n08:r50n08:r50n09:r50n09:r50n09:r50n09:r50n09:r50n09:r50n09:r50n09:r50n09:r50n09:r50n09:r50n09:r50n09:r50n09:r50n09:r50n09:r50n09:r50n09:r50n09:r50n09 mox  01/10-11:37:10 default 008:17:45.00 18025 21239 78836,78840,78842,78852,78880,78935,78938,78951,78939,78940,78941,78942 

OUTPUT с @ RavinderSingh13 сценария:

$ awk '{num=split($6, A,":");for(i=1;i<=num;i++){B[A[i]]};$6=length(B);print}' test.txt 
47117 test RUN abaqus_medium fea-admin 4 mox 01/10-11:37:10 default 008:17:45.00 18025 21239 78836,78840,78842,78852,78880,78935,78938,78951,78939,78940,78941,78942 
47123 test RUN abaqus_medium fea-admin 7 td42 01/10-12:09:47 default 000:00:01.00 61 607 181931,181935,181937,181945,181975,181982 01/10-12:09:49 - 
47117 test RUN abaqus_medium fea-admin 7 mox 01/10-11:37:10 default 008:17:45.00 18025 21239 78836,78840,78842,78852,78880,78935,78938,78951,78939,78940,78941,78942 

я бы поставил на СЭД или AWK, но я немного озадачен

+0

Что означает «Я бы поставил на sed или awk, но я немного озадачен» означает? Не делает ли сценарий то, что вы хотите? У вас есть вопрос? –

+0

@ Эд Мортон, на мой вопрос ответил. Я знал, что для этой проблемы я должен использовать sed или awk, и она решена с awk. – bwout

ответ

0

Вы можете сказать:

awk '{num=split($6, A,":");for(i=1;i<=num;i++){B[A[i]]};$6=length(B);print}' Input_file 

С после этого не будет продолжаться добавление длины массива B (спасибо OP за его упоминание).

awk '{num=split($6, A,":");for(i=1;i<=num;i++){B[A[i]]};$6=length(B);delete(B);print}' Input_file 
+1

why '! B [A [i]] ++'? почему не просто 'B [A [i]]'? –

+0

Спасибо @AkshayHegde, изменили его на это сейчас. – RavinderSingh13

+0

Ваш скрипт работает. Для первых случаев. Но после нескольких начинается добавление значения к значению предыдущей строки. Не могу понять, почему. – bwout

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