URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 5580
[ Назад ]

Исходное сообщение
"Скрипт по удалению повторений в файле"

Отправлено staromsk , 19-Июл-06 08:42 
Имеется большой файл
dgdf www1 abc ...
,jhj, www1 vtr...
hffg www10 ....
het www13 ghj
fgh  www15 dgbg
thrthr www15 srgg
.........
. Подскажите пжлста по написанию скрипта, выбирающего из файла слова с маской "www", чтобы получился неповторяющийся список
www1
www2
www3
www4 и так далее

Содержание

Сообщения в этом обсуждении
"Скрипт по удалению повторений в файле"
Отправлено madskull , 19-Июл-06 09:01 
>Имеется большой файл
>dgdf www1 abc ...
>,jhj, www1 vtr...
> hffg www10 ....
>het www13 ghj
>fgh  www15 dgbg
>thrthr www15 srgg
>.........
>. Подскажите пжлста по написанию скрипта, выбирающего из файла слова с маской
>"www", чтобы получился неповторяющийся список
> www1
> www2
> www3
> www4 и так далее
>
grep -Po '\bwww\d+' | sort -u


"Скрипт по удалению повторений в файле"
Отправлено staromsk , 19-Июл-06 09:10 
>>Имеется большой файл
>>dgdf www1 abc ...
>>,jhj, www1 vtr...
>> hffg www10 ....
>>het www13 ghj
>>fgh  www15 dgbg
>>thrthr www15 srgg
>>.........
>>. Подскажите пжлста по написанию скрипта, выбирающего из файла слова с маской
>>"www", чтобы получился неповторяющийся список
>> www1
>> www2
>> www3
>> www4 и так далее
>>
>grep -Po '\bwww\d+' | sort -u

grep -Po '\bwww\d+' file1 > file2
grep: The -P option is not supported



"Скрипт по удалению повторений в файле"
Отправлено madskull , 19-Июл-06 09:20 

>>>
>>grep -Po '\bwww\d+' | sort -u
>
>grep -Po '\bwww\d+' file1 > file2
>grep: The -P option is not supported

Мораль: указывайте систему.

Тогда
sed 's/^.*\s\(www[0-9]\+\).*/\1/' | sort | uniq


"Скрипт по удалению повторений в файле"
Отправлено staromsk , 19-Июл-06 09:29 
>
>>>>
>>>grep -Po '\bwww\d+' | sort -u
>>
>>grep -Po '\bwww\d+' file1 > file2
>>grep: The -P option is not supported
>
>Мораль: указывайте систему.
>
>Тогда
>sed 's/^.*\s\(www[0-9]\+\).*/\1/' | sort | uniq

прошу прощения. Система debian linux
Но не получается всё равно
sed 's/^.*\s\(www[0-9]\+\).*/\1/' | sort | uniq file1
Вылазит тот же самый список


"Скрипт по удалению повторений в файле"
Отправлено madskull , 19-Июл-06 09:33 
>>Тогда
>>sed 's/^.*\s\(www[0-9]\+\).*/\1/' | sort | uniq
>
>прошу прощения. Система debian linux
>Но не получается всё равно
>sed 's/^.*\s\(www[0-9]\+\).*/\1/' | sort | uniq file1
> Вылазит тот же самый список

Эт-та, надо основы учить...
sed 's/^.*\s\(www[0-9]\+\).*/\1/' file1 | sort | uniq
или
cat file1 | sed 's/^.*\s\(www[0-9]\+\).*/\1/' | sort | uniq


"Скрипт по удалению повторений в файле"
Отправлено staromsk , 19-Июл-06 09:41 
>>>Тогда
>>>sed 's/^.*\s\(www[0-9]\+\).*/\1/' | sort | uniq
>>
>>прошу прощения. Система debian linux
>>Но не получается всё равно
>>sed 's/^.*\s\(www[0-9]\+\).*/\1/' | sort | uniq file1
>> Вылазит тот же самый список
>
>Эт-та, надо основы учить...
>sed 's/^.*\s\(www[0-9]\+\).*/\1/' file1 | sort | uniq
>или
>cat file1 | sed 's/^.*\s\(www[0-9]\+\).*/\1/' | sort | uniq


Получился список, но он повторяющийся и с ненужной инфой:
dfhfdhwww1cfbfg
fghfghwww1dfgf
reggegwww1dfggd
rgrewww2dfggddg
dfgfhdwww2dfghgh
dghhhfwww3fgdgf
fdgfghwww4regn

Как отсечь лишнее-то?


"Скрипт по удалению повторений в файле"
Отправлено madskull , 19-Июл-06 09:54 

>Как отсечь лишнее-то?
Подумать да поэкспериментировать самому.

Проверил на дебиане, действительно, sed 4.1.2 не понимает \s.
В общем, "на моем дебиане" работает следующий код:
cat file1 | sed 's/^.* \(www[0-9]\+\).*/\1/' | sort | uniq


"Скрипт по удалению повторений в файле"
Отправлено staromsk , 19-Июл-06 10:35 
>
>>Как отсечь лишнее-то?
>Подумать да поэкспериментировать самому.
>
>Проверил на дебиане, действительно, sed 4.1.2 не понимает \s.
>В общем, "на моем дебиане" работает следующий код:
>cat file1 | sed 's/^.* \(www[0-9]\+\).*/\1/' | sort | uniq


Спасибо большое! Всё работает! Только вот не могу понять почему он выводит лишнего много, если нужно получить
www.eee.1
www.eee.2
www.eee.3
www.eee.4
....
Пишу cat file1 | sed 's/^.* \(www.eee.[0-9]\+\).*/\1/' | sort | uniq
                    


"Скрипт по удалению повторений в файле"
Отправлено Brainbug , 19-Июл-06 09:57 
>Имеется большой файл
>dgdf www1 abc ...
>,jhj, www1 vtr...
> hffg www10 ....
>het www13 ghj
>fgh  www15 dgbg
>thrthr www15 srgg
>.........
>. Подскажите пжлста по написанию скрипта, выбирающего из файла слова с маской
>"www", чтобы получился неповторяющийся список
> www1
> www2
> www3
> www4 и так далее
>

[temp@temp ~]$ cat file1
,jhj, www1 vtsfdgsdr
hffg www10 sdfgfsd
het www13 ghj
fgh  www15 dgbg
thrthr www15 srgg
sfgksdf www1 sfdklgjsdfl
adfgjkdfh w sdfkljgsfldg
sklfjglksdf sfdglkjsf sfdlgjsdflgk
sdfgsdfg www10 sdfjkghf
[temp@temp ~]$ awk '{if($2 ~ /www/){print $2}}' file1 | sort -u
www1
www10
www13
www15

P.S. Pri uslovii 4to jest razdeliteli mezdu polami. V na4alnom uslovii oni jest.



"Скрипт по удалению повторений в файле"
Отправлено staromsk , 19-Июл-06 10:47 
>>Имеется большой файл
>>dgdf www1 abc ...
>>,jhj, www1 vtr...
>> hffg www10 ....
>>het www13 ghj
>>fgh  www15 dgbg
>>thrthr www15 srgg
>>.........
>>. Подскажите пжлста по написанию скрипта, выбирающего из файла слова с маской
>>"www", чтобы получился неповторяющийся список
>> www1
>> www2
>> www3
>> www4 и так далее
>>
>
>[temp@temp ~]$ cat file1
>,jhj, www1 vtsfdgsdr
>hffg www10 sdfgfsd
>het www13 ghj
>fgh  www15 dgbg
>thrthr www15 srgg
>sfgksdf www1 sfdklgjsdfl
>adfgjkdfh w sdfkljgsfldg
>sklfjglksdf sfdglkjsf sfdlgjsdflgk
>sdfgsdfg www10 sdfjkghf
>[temp@temp ~]$ awk '{if($2 ~ /www/){print $2}}' file1 | sort -u
>www1
>www10
>www13
>www15
>
>P.S. Pri uslovii 4to jest razdeliteli mezdu polami. V na4alnom uslovii oni
>jest.

Извиняюсь перед Вами и уважаемой аудитории форума, но начальные условия такие:
ert<www.eee.1:egrr
fthh<www.eee.1:ynhnht
rtg<www.eee.13rth
rreg<www.eee.26:trhh
hynn<www.eee.467:segn
....