Я хотел бы удалить оба вхождения дубликатов из файла на основе нескольких столбцов. Вот пример игрушки:Удаление всех вхождений дубликатов в файл в Unix
Хотелось бы удалить все записи, которые не имеют уникальности через первые 4 столбца. Так применяя awk
сценарий к:
BLUE,CAR,RED,HOUSE,40
BLUE,CAR,BLACK,HOUSE,20
BLUE,CAR,GREEN,HOUSE,10
BLUE,TRUCK,RED,HOUSE,40
BLUE,TRUCK,GREEN,HOUSE,40
BLUE,TRUCK,RED,HOUSE,40
Если в результате
BLUE,CAR,RED,HOUSE,40
BLUE,CAR,BLACK,HOUSE,20
BLUE,CAR,GREEN,HOUSE,10
BLUE,TRUCK,GREEN,HOUSE,40
Я попытался:
awk -F"," -v OFS="," '{cnt[$1,$2,$3,$4]++} END {for (rec in cnt) if (cnt[rec] == 1) print rec}' ss.txt
успешно удаляет как простофили, но не применяется правильный разделитель или печать всей записи, в результате чего:
BLUECARREDHOUSE
BLUETRUCKGREENHOUSE
BLUECARBLACKHOUSE
BLUECARGREENHOUSE
Я предпочитаю решение awk
, но любое переносное решение приветствуется.
Вы хотите получить дополнительные данные на выходе (40 в первой записи)? –
Да, вся запись должна быть напечатана, даже если дублирующие значения устанавливаются только в первых четырех полях. – mlegge