Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: [РЕШЕНО] Поиск ".." в файле [BASH]  (Прочитано 2321 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн RazrFalcon

  • Автор темы
  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
[РЕШЕНО] Поиск ".." в файле [BASH]
« : 09 Февраля 2011, 13:58:34 »
Нужно отобразить в консоли все ".." в файле, а потом заменить на "...".
У меня находит 2-е точки и в троеточии.  А нужно, именно где две.
« Последнее редактирование: 09 Февраля 2011, 23:16:39 от RazrFalcon »
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн truegeek

  • FPGA Designer
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 4214
  • аЦкий схемотехник
    • Просмотр профиля

Оффлайн RazrFalcon

  • Автор темы
  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: Поиск ".." в файле [BASH]
« Ответ #2 : 09 Февраля 2011, 15:52:13 »
Я умею пользоваться стандартными прогами (aka sed, grep ,awk, cut ...)
Я не пойму как правильно найти ".." . На ссылках ничего...
Мне нужно правильное регулярное выражение.
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн vasilisc

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 2563
  • г.Северодвинск - строим АПЛ
    • Просмотр профиля
    • Авторские статьи об OpenSource
Re: Поиск ".." в файле [BASH]
« Ответ #3 : 09 Февраля 2011, 15:53:05 »
Нужно отобразить в консоли все ".." в файле, а потом заменить на "...".
У меня находит 2-е точки и в троеточии.  А нужно, именно где две.
покажите пример файла и кусок баша который неправильно ищет

Оффлайн RazrFalcon

  • Автор темы
  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: Поиск ".." в файле [BASH]
« Ответ #4 : 09 Февраля 2011, 15:57:28 »
(Нажмите, чтобы показать/скрыть)
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн truegeek

  • FPGA Designer
  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 4214
  • аЦкий схемотехник
    • Просмотр профиля
Re: Поиск ".." в файле [BASH]
« Ответ #5 : 09 Февраля 2011, 15:58:27 »
На ссылках ничего...
что значит ничего, по первой ссылке четыре примера...

Оффлайн RazrFalcon

  • Автор темы
  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: Поиск ".." в файле [BASH]
« Ответ #6 : 09 Февраля 2011, 16:02:11 »
что значит ничего, по первой ссылке четыре примера...
Четыре Элементарных примера.
И ничего нужного мне, так как там 4-е варианта замены.

Что то в духе:
cat text | grep '\.\.' | sed '/.../d'Только для строк не содержащих ..

Так работает:
cat text | sed 's/\.\.\.//g' | grep '\.\.'Может есть более правильный вариант?
« Последнее редактирование: 09 Февраля 2011, 16:10:38 от RazrFalcon »
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн RandomNT

  • Любитель
  • *
  • Сообщений: 80
    • Просмотр профиля
Re: Поиск ".." в файле [BASH]
« Ответ #7 : 09 Февраля 2011, 20:15:21 »
[^\.]\.\.[^\.]

Оффлайн RazrFalcon

  • Автор темы
  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: Поиск ".." в файле [BASH]
« Ответ #8 : 09 Февраля 2011, 20:27:05 »
Я так понимаю это для grep  :D

cat text | grep '[^\.]\.\.[^\.]'
Снова.. и снова - этот сон...
таки находит, правда выделяет "а.."  ???

И не могли бы расшифровать что/как оно ищет?
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн Phlya

  • Старожил
  • *
  • Сообщений: 2219
  • Фля, Цыганский барон, Винни Пух
    • Просмотр профиля
Re: Поиск ".." в файле [BASH]
« Ответ #9 : 09 Февраля 2011, 20:30:33 »
Ubuntu 14.04 (Unity), MSI GE40

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Поиск ".." в файле [BASH]
« Ответ #10 : 09 Февраля 2011, 20:57:11 »
[^.]..[^.]
2 точки в начале и в конце строки не найдёт.


Есть такой вариант:
egrep '([^\.]|^)\.{2}([^\.]|$)' file.txt

Оффлайн RazrFalcon

  • Автор темы
  • O_o
  • Старожил
  • *
  • Сообщений: 3129
  • Zombie Mod
    • Просмотр профиля
    • Я на GitHub
Re: Поиск ".." в файле [BASH]
« Ответ #11 : 09 Февраля 2011, 21:06:57 »
не находит ..  в конце
тот что я выше кидал - пашет

PS вы хоть расшифровуйте что оно делает. А то просто набор сиволов.
Gentoo + KDE, Official Windows Hater
Хотите помочь нашей вики: https://help.ubuntu.ru/wiki/fixme

Оффлайн ArcFi

  • Старожил
  • *
  • Сообщений: 15189
    • Просмотр профиля
    • aetera.net
Re: Поиск ".." в файле [BASH]
« Ответ #12 : 09 Февраля 2011, 21:14:29 »
не находит ..  в конце
Мой вариант находит.

$ echo -e '. ...\n..\n...\nx..x\n..x\nx.. ...\n  . x ..\n\n' | egrep '([^\.]|^)\.{2}([^\.]|$)'
..
x..x
..x
x.. ...
  . x ..

PS вы хоть расшифровуйте что оно делает. А то просто набор сиволов.

([^\.]|^) -- любой символ, кроме точки, либо начало строки
\.{2} -- 2 точки
([^\.]|$) -- любой символ, кроме точки, либо конец строки

Оффлайн RandomNT

  • Любитель
  • *
  • Сообщений: 80
    • Просмотр профиля
Re: Поиск ".." в файле [BASH]
« Ответ #13 : 09 Февраля 2011, 21:27:31 »
Есть такой вариант:
egrep '([^.]|^).{2}([^.]|$)' file.txt
согласен

для sed'а будет так
cat text | sed -r 's/([^.]|^).{2}([^.]|$)/1...2/g'
1 и 2 - туда оно подставит то что попадет в первые и вторые скобки

Пользователь решил продолжить мысль 09 Февраля 2011, 21:30:30:
Как вариант, двоеточия и троеточия заменять на троеточия
cat text | sed -r 's/\.{2,3}/.../g'
« Последнее редактирование: 09 Февраля 2011, 21:30:30 от RandomNT »

Оффлайн [DarkNet]Alpha

  • Активист
  • *
  • Сообщений: 987
  • Эмоциональный эльдар
    • Просмотр профиля
    • EBM-радио
Re: Поиск ".." в файле [BASH]
« Ответ #14 : 09 Февраля 2011, 21:33:26 »
Что за книга?

Пользователь решил продолжить мысль [time]Wed Feb  9 21:39:00 2011[/time]:
И да, grep -w
« Последнее редактирование: 09 Февраля 2011, 21:40:09 от [DarkNet]Alpha »

 

Страница сгенерирована за 0.04 секунд. Запросов: 21.