Как объединить повторяющиеся строки в одну, разделенную запятой

Вы можете сделать это с помощью awk , хотя решение с использованием uniq может быть проще:

awk '/^File ID/ && !a[$3] { a[$3] = 1; print $3 }' file_list.txt
2
31.05.2017, 23:58
2 ответа

Только пара настроек:

$ awk '
    BEGIN{FS="\t"; OFS=FS}; 
    { arr[$1] = arr[$1] == ""? $2 : arr[$1] "," $2 }   
    END {for (i in arr) print i, arr[i] }
' data
St1    apt1,apt2
St2    apt5
St3    apt6,apt7,apt8
1
27.01.2020, 22:10
sed -e '
   :a
   $!N
   s/^\(\(\S\+\)\s\+.*\)\n\2\s\+/\1,/;ta
' yourfile

Результаты

St1 apt1,apt2
St2 apt5
St3 apt6,apt7,apt8
1
27.01.2020, 22:10

Теги

Похожие вопросы