|
|
|
shell - убрать одинаковые символы в строке.
|
|||
|---|---|---|---|
|
#18+
Есть строка - *###PP## Количество решёток, звёздочек, букв P может варьироваться от 1 до 3-х. Как бы это хозяйство упорядочить, чтобы на выходе получить *#P# (это из той же задачки где с компорта данные, это такое регулярное выражение чтоб поймать звонок по IP-телефонии). Что-то у меня идей совсем нет... А запускать перл для этого - совсем не хочется :( Хочется на shеll - от начала и до конца. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2005, 17:50:47 |
|
||
|
shell - убрать одинаковые символы в строке.
|
|||
|---|---|---|---|
|
#18+
Т.е. нужно склеить повторяющиеся символы в один? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2005, 18:02:58 |
|
||
|
shell - убрать одинаковые символы в строке.
|
|||
|---|---|---|---|
|
#18+
ага ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2005, 19:17:12 |
|
||
|
shell - убрать одинаковые символы в строке.
|
|||
|---|---|---|---|
|
#18+
привет! Суперизврат! :-) echo "###P#ZZZf" | awk '{for(i=1;i<=length($1);i++)print substr($1,i,1)}' | uniq | awk '{main=main "" $1}END {print main}' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2005, 19:37:18 |
|
||
|
shell - убрать одинаковые символы в строке.
|
|||
|---|---|---|---|
|
#18+
--null--привет! Суперизврат! :-) echo "###P#ZZZf" | awk '{for(i=1;i<=length($1);i++)print substr($1,i,1)}' | uniq | awk '{main=main "" $1}END {print main}' Ну если вы точно знаете, что повторяются ТОЛЬКО # и P, то не проще ли sed 's/PP*/P/g;s/##*/#/g' ?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2005, 22:01:16 |
|
||
|
shell - убрать одинаковые символы в строке.
|
|||
|---|---|---|---|
|
#18+
да, конечно - и это гораздо эффективнее , но мне просто было интересно рассмотреть общий случай исходя из топика. Если набор символов четко известен то sed конечно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2005, 22:41:51 |
|
||
|
shell - убрать одинаковые символы в строке.
|
|||
|---|---|---|---|
|
#18+
Сорри, мой первый вариант позорен и неуклюж. Вот удаление всех повторений Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2005, 23:16:27 |
|
||
|
shell - убрать одинаковые символы в строке.
|
|||
|---|---|---|---|
|
#18+
Остановился на такой конструкции Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2005, 23:21:43 |
|
||
|
shell - убрать одинаковые символы в строке.
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2005, 23:22:48 |
|
||
|
shell - убрать одинаковые символы в строке.
|
|||
|---|---|---|---|
|
#18+
ой а у меня работает. Код: plaintext 1. 2. версия sed что ли или что-то такое? Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2005, 23:25:56 |
|
||
|
shell - убрать одинаковые символы в строке.
|
|||
|---|---|---|---|
|
#18+
Наверное) Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2005, 23:31:57 |
|
||
|
shell - убрать одинаковые символы в строке.
|
|||
|---|---|---|---|
|
#18+
немогу добиться версии :( Он переходит в интерактивный режим, чтоли и по sed --ver и по sed --v и ни на что не реагирует кроме CTRL-C..... На 4.9 и на 4.11 фре пробовал... Одно и тоже... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2005, 23:32:10 |
|
||
|
shell - убрать одинаковые символы в строке.
|
|||
|---|---|---|---|
|
#18+
некоторые старенькие (sedенькие :-)) sed-ы кстати в такой ситуации хотят чтобы их защитили - что-то типа Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2005, 23:34:54 |
|
||
|
shell - убрать одинаковые символы в строке.
|
|||
|---|---|---|---|
|
#18+
Да, так Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2005, 23:39:23 |
|
||
|
shell - убрать одинаковые символы в строке.
|
|||
|---|---|---|---|
|
#18+
Я, кстати, всё равно при своём варианте остаюсь :) Там я хоть понимаю что происходит. А тут набор символов - и на выходе то ,что надо. Шаманство. :) Ещё момент - sed при первом запуске тормозит неслабо. На 4-м пне по полсекунды думает. А вот awk сразу результат выдал. Правда повторные запуски на глаз разницы не вызвили :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2005, 23:48:52 |
|
||
|
shell - убрать одинаковые символы в строке.
|
|||
|---|---|---|---|
|
#18+
думаю, разница во времени - медленнее тот, который первым вызывался, а дальше файловый кеш уже работал. Так вообще обычно awk все же помедленнее стартует, когда-то проводил соревнования :-) К тому же если иметь в виду пример от 19:37 - то в нем сделано все, чтобы стать неэффективным - два конвейра, первый awk посимвольно все разворачивает, потом unuq, а потом awk все сворачивает опять же посимвольно. Это должно быть ну оч-чень медленно! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2005, 23:59:05 |
|
||
|
shell - убрать одинаковые символы в строке.
|
|||
|---|---|---|---|
|
#18+
--null--Сорри, мой первый вариант позорен и неуклюж. Вот удаление всех повторений Код: plaintext Null круто. ))))))) я б, наверно, не сообразил бы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 00:21:42 |
|
||
|
shell - убрать одинаковые символы в строке.
|
|||
|---|---|---|---|
|
#18+
Дети, скажите echo "#####PPPPP####" | tr -s "#P" и не мучайтесь! :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 07:25:31 |
|
||
|
shell - убрать одинаковые символы в строке.
|
|||
|---|---|---|---|
|
#18+
Клёво :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 09:04:42 |
|
||
|
shell - убрать одинаковые символы в строке.
|
|||
|---|---|---|---|
|
#18+
no-dashiДети, скажите echo "#####PPPPP####" | tr -s "#P" и не мучайтесь! :-) Вариант от --null-- (sed "s/\(.\)\1*/\1/g") представляет собой общее решение, когда набор входящих символов заранее неизвестен, а потому с моей точки зрения является более предпочтительным и более "взрослым" (профессиональным). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 09:36:21 |
|
||
|
shell - убрать одинаковые символы в строке.
|
|||
|---|---|---|---|
|
#18+
спасибо :) Но что-то шаблонное мышление (sed/awk) иногда подводит - tr действительно вариант весьма прикольный. Думаю, вот универсальный для tr для ASCII кодировки: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 09:57:41 |
|
||
|
shell - убрать одинаковые символы в строке.
|
|||
|---|---|---|---|
|
#18+
А кончилось всё вот так: Код: plaintext 1. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 10:19:40 |
|
||
|
shell - убрать одинаковые символы в строке.
|
|||
|---|---|---|---|
|
#18+
--null--спасибо :) Но что-то шаблонное мышление (sed/awk) иногда подводит - tr действительно вариант весьма прикольный. Думаю, вот универсальный для tr для ASCII кодировки: Код: plaintext Тут речь идет об IP-телефонии, поэтому можно предположить, что цифр это касаться не должно. Как это будет выглядеть на tr (практичекси никогда его не использую)? Так Код: plaintext 1. На sed Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 10:41:47 |
|
||
|
shell - убрать одинаковые символы в строке.
|
|||
|---|---|---|---|
|
#18+
lissyara А кончилось всё вот так: Код: plaintext 1. А как incoming выглядит в общем случае? Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 10:42:54 |
|
||
|
shell - убрать одинаковые символы в строке.
|
|||
|---|---|---|---|
|
#18+
lissyara А кончилось всё вот так: Код: plaintext 1. Posted via ActualForum NNTP Server 1.3 Еще раз :) А как incoming выглядит в общем случае? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2005, 10:44:16 |
|
||
|
|

start [/forum/topic.php?fid=25&msg=33259816&tid=1490280]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
40ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 188ms |
| total: | 292ms |

| 0 / 0 |
