2014-12-22 1 views
0

Я хотел бы grep неуникальная линия. Это содержимое файла:Bash: grep не уникальные линии

this is line 1 
this is line 1 
this is line 2 
this is line 1 
this is line 1 

Я просто хочу, чтобы вывести this is line 2 моей оболочки. Как я могу это сделать? Есть ли обратный конец команды uniq? Извините за плохой английский.

+1

вы даже смотреть вокруг немного? http://superuser.com/q/111430/311327 –

ответ

4
sort x.txt |uniq -u 

предполагается, что ваш файл находится в x.txt, который дает

this is line 2 
+0

Как ни странно, вам не всегда нужно сортировать, даже если текст еще не в порядке - я не уверен, когда это изменилось. –

+1

Я тоже смотрел на это, если у вас есть одна строка «это строка 1», в конце она покажет ее – KeepCalmAndCarryOn

+0

Не в случае с BSD uniq на более поздних дистрибутивах OSX и Linux. Если вы знаете, что это так, вы можете сэкономить себе прок и отправить данные по трубе. –

3

Заканчивать man uniq:

-u  Only output lines that are not repeated in the input. 

Имея это в виду, своего рода делает попарное сравнение, чтобы увидеть, если это сосед , что означает, что вам необходимо отсортировать свой результат до подачи его на uniq:

$ sort my_list.txt | uniq -u

+0

Ницца: всегда лучше, если ни одна труба не нужна –

+0

, но как примечания @keepcalmandcarryon: если у вас есть только одна «линия 1» в конце; он покажет ... –

+0

yep. потому что будущее не так волшебно, как я думал в 230 утра –

2

Вот awk решение:

awk '{a[$0]++} END {for (i in a) if (a[i]==1) print i}' file 
this is line 2 

 Смежные вопросы

  • Нет связанных вопросов^_^