присоединитесь к нескольким строкам на основе column1

Установка ntfs-config и установка полномочий чтения-записи решила это для меня.

8
20.06.2017, 11:36
2 ответа
[1133249] Если не возражаете против порядка вывода:[12141]Пояснение[12142]NF>1[1133929], то есть нужно обрабатывать только ту строку, которая не пуста. [12143]Сохраняем все первое поле в ассоциативном массиве [1133930]a[1133931], при этом ключом является первое поле, значением - второе поле (или остальная часть строки). Если ключ уже имеет значение, то мы объединяем два значения. [12144]В блоке [1133932]END[1133933], проходя по ассоциативному массиву [1133934]a[1133935], выводим все его ключи с соответствующим значением. [12145]Или используя [1133674]perl[1133675], мы сохраним порядок:[12146]
10
27.01.2020, 20:11

О, это просто. Вот простая версия, которая сохраняет порядок ключей в том виде, в каком они появляются в файле:

$ awk -F, '
    /.+/{
        if (!($1 in Val)) { Key[++i] = $1; }
        Val[$1] = Val[$1] "," $2; 
    }
    END{
        for (j = 1; j <= i; j++) {
            printf("%s %s\n%s", Key[j], Val[Key[j]], (j == i) ? "" : "\n");       
        }                                    
    }' file.txt

-вывод должен выглядеть следующим образом:

abc, 12345, 56345, 15475, 123345

def, text and nos, text and nos, text and nos, text and nos

ghi, something else, something else, something else, something else

jkl, words and numbers, words and numbers, words and numbers, words and numbers

Если вы не возражаете, чтобы в конце была лишняя пустая строка, просто замените строку printf на printf("%s %s\n\n", Key[j], Val[Key[j]]);

1
27.01.2020, 20:11

Теги

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