2014-02-04 3 views
0

im пытается распечатать содержимое ячейки таблицы html.Regex не работает с Grep

Я думал, что самый простой способ сделать это был с grep, , но по некоторым причинам регулярное выражение работает на regexr.com, но не внутри Grep.

Возможно, что-то с побегом? я попытался убежать от меньшего и большего, чем <> символов.

Это код, я использую

wget -q -O login.html --save-cookies cookies.txt --keep-session-cookies --post-data 'username=sssss&password=fffff' http://ffffff/login 

wget -q -O page.html --load-cookies cookies.txt http://ffffff/somepage |grep -P '(?<=<tr><td class=list2>www</td><td class=list2 align=center>A</td><td class=list2 >)(.*?)(?=</td><td class=list2 align=center><input type=checkbox name=arecs5)' |recode html...ascii 

Может кто-нибудь мне помочь, пожалуйста? Я из нидерландов, так жаль моего английского.

я так же попытался добавить опцию -c и напечатанное 0

EDIT:

Добавлен мой полный код, я нашел 1 ошибку. У меня не было параметра -O для вывода html страницы. но он все еще не работает. он ничего не печатает

+1

Позаботьтесь о том, чтобы regex и html не были хорошими друзьями! – Toto

+0

Я читал, что да, но я не забочусь о безопасности, так как его не похоже на страницу, на которой я пытаюсь wget, будет взломать меня .. или это не то, что вы имеете в виду? –

+1

Я бы сказал, что синтаксический анализ html с регулярным выражением очень тяжелый, посмотрите на: http://stackoverflow.com/a/4234491/372239 – Toto

ответ

0

И, наконец, это работает. Я добавил -qO- для wget, я не знаю, почему, но при добавлении - после -O это работает.

1

Традиционный grep не поддерживает обратные пути так, как вы его используете.

Попробуйте использовать grep -P (PCRE):

grep -P 'pattern' file 
+0

Я пытался добавить P, но все равно ничего, вся моя строка на самом деле wget --load-cookies cookie.txt url | grep -P 'regex' | recode html ... ascii может быть, что-то что-то меняет? возможно, мне нужно выбрать путь к файлу, а не напрямую использовать wget конвейерно? –

+0

Вы можете сделать это как: 'wget --load-cookies cookie.txt url | grep "$ pattern" 'и убедитесь, что' $ pattern' установлен раньше. – anubhava

+0

тоже попробовал, нужно ли использовать двойные кавычки вокруг $ PATTERN? , когда я их не добавляю, напечатайте Grep: missing ')' или что-то –

0

Рассмотрите возможность использования Ack или ag, который поддерживает нативно PCRE.