Он отлично работает в моей системе, но вы, вероятно, можете обойтись без:
sed -e 's?^.* value="??' -e 's?".*$??'
, как показано в этом транскрипте:
pax> echo '<input type="hidden" name="form_token" id="edit-system-site-maintenance-settings-form-token" value="0f5ae5a6e8bb84d3e18b30b7ff2a46b2" />' | sed -e 's?^.* value="??' -e 's?".*$??'
0f5ae5a6e8bb84d3e18b30b7ff2a46b2
GNU sed
может использовать другие символы-разделителии это может свести к минимуму зигзаги, которые вы часто найдете в командах sed
, например \/\/\/\/\/
.
Кроме того, вам нужно всего лишь вызвать одну копию sed
и дать ей несколькоКоманды для запуска в каждой строке.
Второй команды должно быть достаточно, чтобы убрать все после значения, особенно в более сложных, таких как:
<input type="hidden" name="xyzzy" value="plugh" something="else" />
Это, если вы хотите для использования инструментов обработки текста, таких как sed
, для обработки XML.Есть более «надежные» способы сделать это с помощью подходящих инструментов, но я предполагаю, что вы можете держать свой XML-формат под контролем до такой степени, что sed
сможет его обработать.