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


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Помогите с grep  (Прочитано 480 раз)

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

Оффлайн Ввысь

  • Автор темы
  • Активист
  • *
  • Сообщений: 473
    • Просмотр профиля
Помогите с grep
« : 24 Апреля 2017, 12:52:40 »
Здравствуйте.

в файле есть строки:

<Name>Sklad<Name>
<Name>SQLSERVER2008<Name>
<Name>Taras<Name>
<Name>VERWALTER<Name>

пытаюсь найти, пишу
cat 2log.txt| grep -o "<Name>.........." | sort -u

получаю
<Name>emily<Name
<Name>eric<Name>
<Name>escaner<Na

т.к. длина неизвестна, ну и будет удобнее, хочу получить только <Name>имя<Name>

пробую использовать это [^[:space:]], пишу grep -o "<Name>[^[:space:]]+<Name>", ничего не получаю. В чем ошибка?

Короткая версия: нужно найти имя(длина различна и не известна) <Name>имя<Name> в txt файле.

Спасибо.

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Re: Помогите с grep
« Ответ #1 : 24 Апреля 2017, 13:01:15 »
grep -Po '<Name>\K(.+?)(?=<Name>)'
Пользователь добавил сообщение 24 Апреля 2017, 13:13:21:
Или так:
grep -Po '<Name>\K[^<]+'perl -ne '/<Name>(.+?)<Name>/ && print "$1\n"'sed -rn 's/.*<Name>([^<]+).*/\1/p'
« Последнее редактирование: 24 Апреля 2017, 13:59:01 от renzrv »

Оффлайн Ввысь

  • Автор темы
  • Активист
  • *
  • Сообщений: 473
    • Просмотр профиля
Re: Помогите с grep
« Ответ #2 : 24 Апреля 2017, 13:33:33 »
renzrv,
Шикарно), спасибо, все работает. Сделал по первому варианту.

Когда читаю такие ответы наступает понимание:
"позволь пару слов насчёт твоих знаний. В данный момент цена им — ноль. (Люди в черном)
« Последнее редактирование: 24 Апреля 2017, 13:36:26 от Ввысь »

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Re: Помогите с grep
« Ответ #3 : 24 Апреля 2017, 13:59:51 »
Код: (bash) [Выделить]
sed  '/\n/P;/<Name>/s//\n/g;D' 2log.txt
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

 

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