Подтвердить что ты не робот

Поиск уникальных строк

Как найти уникальные строки и удалить все дубликаты из файла? Мой входной файл

1
1
2
3
5
5
7
7

Я хотел бы получить результат:

2
3

sort file | uniq не будет выполнять эту работу. Покажет все значения 1 раз

4b9b3361

Ответ 1

uniq имеет необходимый параметр:

   -u, --unique
          only print unique lines
$ cat file.txt
1
1
2
3
5
5
7
7
$ uniq -u file.txt
2
3

Ответ 2

Используйте следующее:

sort < filea | uniq > fileb

Ответ 3

uniq -u заставлял меня сходить с ума, потому что это не сработало.

Поэтому вместо этого, если у вас есть python (у большинства дистрибутивов Linux и серверов уже есть):

Предполагая, что у вас есть файл данных в notUnique.txt

#Python
#Assuming file has data on different lines
#Otherwise fix split() accordingly.

uniqueData = []
fileData = open('notUnique.txt').read().split('\n')

for i in fileData:
  if i.strip()!='':
    uniqueData.append(i)

print uniqueData

###Another option (less keystrokes):
set(open('notUnique.txt').read().split('\n'))

Обратите внимание, что из-за пустых строк окончательный набор может содержать строки 'или только-пробел. Вы можете удалить это позже. Или просто уйти с копированием с терминала;)

#

Просто FYI, На странице Uniq Man:

"Примечание:" uniq "не обнаруживает повторяющиеся строки, если они не смежны. Вы можете сначала отсортировать вход или использовать" sort -u "без" uniq ". Кроме того, сравнения соблюдают правила, указанные в" LC_COLLATE "" ".

Один из правильных способов: # сортировать nonUnique.txt | Uniq

Пример выполнения:

$ cat x
3
1
2
2
2
3
1
3

$ uniq x
3
1
2
3
1
3

$ uniq -u x
3
1
3
1
3

$ sort x | uniq
1
2
3

Пробелы могут быть напечатаны, поэтому будьте готовы!

Ответ 4

uniq -u < file выполнит эту работу.

Ответ 5

uniq должен преуспеть, если вы файл/может быть отсортирован, если вы не можете отсортировать файл по какой-либо причине, вы можете использовать awk:

awk '{a[$0]++}END{for(i in a)if(a[i]<2)print i}'

Ответ 6

Вы также можете распечатать уникальное значение в "файле", используя команду cat отправив pip для sort и uniq

cat file | sort | uniq -u

Ответ 7

sort -d "file name" | uniq -u

это сработало для меня для аналогичного. Используйте это, если это не устроено. Вы можете удалить сортировку, если она устроена

Ответ 8

Это был первый, который я пробовал

skilla:~# uniq -u all.sorted  

76679787
76679787 
76794979
76794979 
76869286
76869286 
......

После выполнения cat -e all.sorted

skilla:~# cat -e all.sorted 
$
76679787$
76679787 $
76701427$
76701427$
76794979$
76794979 $
76869286$
76869286 $

Каждая вторая строка имеет конечное пространство:( После удаления всех конечных пробелов он работает!

Благодарю вас

Ответ 9

Хотя sort занимает O (n log (n)) времени, я предпочитаю использовать

awk '!seen[$0]++'

awk '!seen[$0]++' - это сокращение от awk '!seen[$0]++ {print}', строка печати (= $ 0), если seen[$0], не равна нулю. Это займет больше места, но только O (N) время.

Ответ 10

ты можешь использовать:

sort data.txt| uniq -u

сортировать данные и фильтровать по уникальным значениям