Удалить строки с повторяющимися ячейками - PullRequest
1 голос
/ 12 июля 2011

Мне нужно удалить строки с повторяющимся значением.Например, мне нужно удалить строки 1 и 3 в блоке ниже, потому что они содержат «Value04» - я не могу удалить все строки, содержащие Value03, потому что есть строки с этими данными, которые НЕ являются дубликатами и должны быть сохранены.Я могу использовать любой редактор;Excel, VIM, любые другие командные строки Linux.

В конце не должно быть повторяющихся значений «UserX».User1 должен появляться только 1 раз.Но если User1 существует дважды, мне нужно удалить всю строку, содержащую «Value04», и оставить строку с «Value03»

Value01,Value03,User1
Value02,Value04,User1
Value01,Value03,User2
Value02,Value04,User2
Value01,Value03,User3
Value01,Value03,User4

. Ваши идеи и мысли очень ценятся.

Редактировать: для ясности и исключения слов из процесса редактирования.

Ответы [ 2 ]

1 голос
/ 12 июля 2011

Следующая команда Awk удаляет все значения, кроме первого вхождения в третьем столбце:

$ awk -F',' '{
  if (!seen[$3]) {
    seen[$3] = 1
    print
   }
}' textfile.txt

Выход:

Value01,Value03,User1
Value01,Value03,User2
Value01,Value03,User3
Value01,Value03,User4
0 голосов
/ 12 июля 2011

то же самое в Perl:

perl -F, -nae 'print unless $c{$F[2]}++;' textfile.txt 

при этом используется режим автоматического разделения: "-F, -a" разделяется запятой и помещает результат в массив @F

...