Используйте sed
, чтобы обрезать результаты, которые вы получаете от вашего grep
, то есть.
edit : добавлена переменная myID, используйте любое имя, которое вам нравится.
myID=$(
curl http://www.drupalwebsite.org/?q=user \
| grep '<input type="hidden" name="form_build_id" id="form-[a-zA-Z0-9]*" value="form-[a-zA-Z0-9]*" />' \
| sed 's/^.* id="//;s/" value=.*$//'
)
#use ${myID} later in script
printf "myID=${myID}\n"
Первая часть удаляет «переднюю» часть строки, все до id="
, в то время как вторая часть удаляет каждую " value= ....
.
Обратите внимание, что вы можете связать воедино несколько действий замещения в sed
, разделив их символом ';'.
edit2 Кроме того, когда вы используетеsed, нет никакой причины использовать grep, попробуйте это:
myID=$(
curl http://www.drupalwebsite.org/?q=user \
| sed -n '\@<input type="hidden" name="form_build_id" id="form-[a-zA-Z0-9]*" value="form-[a-zA-Z0-9]*" />@{
s\@^.* id="@@
s\@" value=.*$@@p
}'
)
(Это хорошая привычка - избавляться от ненужных процессов. В этом случае это может не иметь значения, но если вы попадаете туда, где находитесьНаписание кода, который будет выполняться тысячи раз в час, затем наличие дополнительного grep, когда он вам не нужен, создает тысячи дополнительных процессов, которые не нужно создавать.)
Возможно, у вас естьэкранировать символы <и>, например, \ <> или, в худшем случае, [<] [>].
Теперь я использую '@' в качестве разделителя замены reg-ex, чтобы избежать экранирования любых символов '/' в строке srch-target.И я продолжаю использовать это во всем примере, просто чтобы быть последовательным.Для некоторых seds вы говорите им, что используете нестандартный разделитель, следовательно, ведущий \ @ в начале каждого блока кода sed.
-n означает «не печатать по умолчанию каждый»строка ввода ", и из-за этого мы должны добавить 'p' в конце, что означает печать текущего буфера.
Наконец, я не уверен насчет вашего регулярного выражения, особенно -[a-zA-Z0-9]*
, это означает ноль или более предыдущего символа (или класса символов в данном случае).Обычно люди, которым нужен хотя бы один буквенно-цифровой код, используют -[a-zA-Z0-9][a-zA-Z0-9]*
, да ИЛИ [[:alnum:]][[:alnum:]]*
, но я недостаточно хорошо знаю ваши данные, чтобы сказать наверняка.
Надеюсь, это поможет.