2013-08-28 3 views
0

Я пытаюсь Grep части HTML-формы, в частности, часть действий, т.е. <form action = ….
Первоначально я пытался:
grep -E -e 'form\s*action\s*=.*[.]html' ./*
, но он не работает (несмотря на то, Дело в том, что есть такие строки
Тогда я попробовал основным:.!? grep -E -e 'form\s*action\s*=' ./*, но это не сработало
что я делаю неправильнооглавлению для вида действия = часть HTML страницы

+0

Для части './*' вы имеете в виду текущий каталог? И что такое сообщение об ошибке? – Juto

+0

Итак, вы хотите совместить содержимое действия или хотите только '

+0

'xs' - это файл. Как html – Jim

ответ

1

Это не получит вам действие Это поможет вам часть просто раньше. действие. Например, если у вас есть <form id="myForm" action="myFile.php"> регулярное выражение будет просто получить вы form id="myForm" action=

Так попробуйте вместо:

grep -E -o -i -e '<form\s+[^>]*action\s*=[^>]*>' ./*

[^>]* означает, что все, кроме >, ноль или более раз.
-o означает только получить согласование часть
-i означает случай нечувствительным

+0

Даже эта форма 'grep -E -e \\ s * action \\ s * = './*' не дает никаких результатов или 'grep -E -e' \ './* 'не работает ни – Jim

+0

@Jim Я ошибался в отношении двойного экранирования. Я отредактировал свой ответ. Я тестировал его, и он работает –

+0

'grep -E -e '] * action \\ s * = [^>] *>' ./*' не работает ни – Jim

0

Почему бы не использовать реализацию HTML Parser/XPATH? Как и мой Xidel:

Это возвращает URL в части действия:

xidel ./* -e //form/@action 

Или с сопоставления с образцом, а не XPATH:

xidel ./* -e '<form action="{.}"/>*' 

Вы можете даже сделать всю дальнейшую обработку в нем. Например. чтобы не только получить действие, но и значения всех входных элементов, закодированных по URL-адресу, вы можете использовать:

xidel ./* -e //form/form(.) 
Смежные вопросы