在脚本中转义sed的字符

时间:2013-12-14 12:34:40

标签: regex bash sed

我想在bash脚本中使用sed来仅获取隐藏值

sed -n 's/.*<INPUT NAME="res_encab" TYPE=HIDDEN VALUE="\(.*\)>.*/\1/ip;T;q'

但我无法正确逃脱模式

在我的脚本中我有这个

echo $var | sed -n "s/.*<INPUT NAME=\"res_encab\" TYPE=HIDDEN VALUE=\"\(.*\)>.*/\1/ip;T;q"

但是当我运行脚本时,我得到了

bla bla bla bla"> <INPUT NAME="Res_numero" TYPE=hidden VALUE="bla blaa...

insted of

bla bla bla bla

任何消化?

欢呼声

1 个答案:

答案 0 :(得分:2)

您的模式可能过于严格或仅仅是错误的。从一些简单的工作开始,但可能不够严格,如下:

var='<INPUT NAME="Res_numero" TYPE=hidden VALUE="bla as"asdsad>'
echo "$var" | sed -ne 's/.*VALUE="\([^"]*\)".*/\1/p'

获得一个简单的概念验证工作,然后根据需要逐步使其变得越来越严格,如果你的表达仍然有效,则在每一步都进行测试。