The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Режим отображения только ответов первого уровня [ Отслеживать ]

Оглавление

Помогите удалить повторяющиеся строки, mintolik (?), 13-Май-18, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


1. "Помогите удалить повторяющиеся строки"  +/
Сообщение от михалыч (ok), 13-Май-18, 07:03 
> Есть файл, в нём постоянно повторяются строки. Необходимо удалить повторяющиеся строки,
> но без сортировки списка.
> $ sort file.txt| uniq -u > sort.txt - не подходит, так как
> я не хочу сортировать текст. Мне нужно лишь избавиться от повторяющихся
> строк.
> Заранее благодарю за помощь.

Пожалуйста.

perl -e 'for(`cat file.txt`){print unless $s{$_}++}'

или так
perl -e '@u=grep{\!$s{$_}++} `cat file.txt`; print @u'

в FreeBSD знак "!" приходится экранировать
Ответить | Правка | Наверх | Cообщить модератору
есть ответы, показать

6. "Помогите удалить повторяющиеся строки"  –9 +/
Сообщение от Pahanivo (ok), 15-Май-18, 16:04 
> Необходимо удалить повторяющиеся строки, но без сортировки списка.
> $ sort file.txt| uniq -u > sort.txt - не подходит, так как
> я не хочу сортировать текст. Мне нужно лишь избавиться от повторяющихся
> строк.

юник без сорта предлагали?

> cat file

1
2
3
4
5
6
6
7
8
8
9

> cat file | uniq

1
2
3
4
5
6
7
8
9

Ответить | Правка | Наверх | Cообщить модератору
есть ответы, показать

28. "Помогите удалить повторяющиеся строки"  +/
Сообщение от Аноним (28), 10-Июл-18, 19:20 
Вообще uniq без sort, но могли бы свой юник переизобрести, например

while read -r l ; do [ "$l" != "$p" ] && echo "$l" ; p="$l" ; done

Ответить | Правка | Наверх | Cообщить модератору

29. "Помогите удалить повторяющиеся строки"  +2 +/
Сообщение от iklingen (ok), 26-Июл-18, 21:16 
Идея для большого количества строк данных:
1) к исходному файлу добавляем нумерацию строк (индексы) как некоторое поле, например в первых нескольких позициях:

$cat file
7
5
2
7
2
0
3
1
2
3
4
5
0
8
4
2


$cat -n file
     1    7
     2    5
     3    2
     4    7
     5    2
     6    0
     7    3
     8    1
     9    2
    10    3
    11    4
    12    5
    13    0
    14    8
    15    4
    16    2

2) сортируем по данным с удалением дублей:

$cat -n file | sort -u -k 2
     6    0
     8    1
     3    2
     7    3
    11    4
     2    5
     1    7
    14    8

3) теперь сортируем по номерам строк/индексам:

$cat -n file | sort -u -k 2 | sort -n
     1    7
     2    5
     3    2
     6    0
     7    3
     8    1
    11    4
    14    8

4) и убираем индексы:

$cat -n file | sort -u -k 2 | sort -n | cut -f2
7
5
2
0
3
1
4
8

Ответить | Правка | Наверх | Cообщить модератору
есть ответы, показать

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру