LINUX.ORG.RU

подскажите с регуляркой.


0

1

привет.

знаю, виноват, регулярки нужно выучить. займусь этим...

имеем файл со строкой типа: URL=http://url/to/some/site

нужно получить строку по 'URL='. пробовал сам разобраться. но '=' почему-то игнорируется. grep выбирает даже строки типа: VAR=$URL

подскажите регулярку.

благодарен.

★★★

Не распарсил. М.б., уже полшестого утра %)

Давай твою регулярку (с которой ты что-то пытался сделать), пример файла и ожидаемый результат конкретно для того примера.

Chaser_Andrey ★★★★★
()
Ответ на: комментарий от Chaser_Andrey

файл:

NAME=some-name
URL=http://url/to/some/site
TYPE=some-type
получить:
NAME=$(cat file.txt | grep 'NAME=' | sed 's|NAME=||') # в NAME должно быть 'some-name'
URL=$(cat file.txt | grep 'URL=' | sed 's|URL=||') # в URL должно быть 'http://url/to/some/site'
TYPE=$(cat file.txt | grep 'TYPE=' | sed 's|TYPE=||') # в TYPE должно быть 'some-type'

спасибо огромное.

niXman ★★★
() автор топика
Ответ на: комментарий от niXman

Странно, потому что так-то всё правильно.

$ cat test 
VAR1=VALUE1
VAR2=VALUE2
VAR3=VAR2
grep VAR2= test | sed s/VAR2=//
VALUE2

Попробуй с «^» перед названием переменной.

grep ^NAME

gatsu
()
Ответ на: комментарий от gatsu

странно. у меня VAR2 находится дважды %)

может с грепом что-то неладно.

$ grep --v
GNU grep 2.5.4

Попробуй с «^» перед названием переменной.

это проблему решает. но дело в том, что эти строки не всегда начинаются вначале строки.

niXman ★★★
() автор топика
Ответ на: комментарий от snoopcat

да. но у меня похоже что-то с грепом неладно, ибо он находит два совпадения, одно из которых правильное, а второе просто как мусор попадает в вывод %)

niXman ★★★
() автор топика
Ответ на: комментарий от Chaser_Andrey

на «URL=$(grep -o -P »(?<=URL\=).*" file.txt)" говорит следующее:

grep: Support for the -P option is not compiled into this --disable-perl-regexp binary

хехе =)

нужно сначала с грепом разобраться...

всем сильно благодарен.

niXman ★★★
() автор топика

awk '-F=' '$1 ~= «URL» { print $2 }' file

val-amart ★★★★★
()
Ответ на: комментарий от siberean

Для недёжности можно допустить «белые» символы (например спейсы и табы) перед NAME: /[ \t]*NAME=... а также триммить спейсы вокруг значения (но выражения после этого будут менее наглядными)

siberean
()

sed -n 's/^URL=//p' file.txt

AITap ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.