从文件bash中提取字符串

时间:2018-04-24 09:15:31

标签: bash

我有这个HTML页面(template.html)&我想提取输入form_nonce

的值
       <div class="row">
                                    <div class="col s12 input-field">
                                        <input type="hidden" name="form_nonce" id="reset_form_nonce" value="66eef7c75d28e44817959c8eec1e0074"/>
                                        <input type="text" placeholder="" name="form_login" id="reset_form_login" class="input" value="" size="20"
                                               autocorrect="off" autocapitalize="none"
                                               tabindex="10"/>
                                        <label for="reset_form_login"><i class="icon-user icon"></i> Username or Email</label>
                                    </div>
                                </div>
<div class="row">
                                    <div class="col s12 input-field">
                                        <input type="hidden" name="form_nonce" id="reset_form_nonce" value="66eef7c75d28e44817959c8eec1e0074"/>
                                        <input type="text" placeholder="" name="form_login" id="reset_form_login" class="input" value="" size="20"
                                               autocorrect="off" autocapitalize="none"
                                               tabindex="10"/>
                                        <label for="reset_form_login"><i class="icon-user icon"></i> Username or Email</label>
                                    </div>
                                </div>

我使用了以下命令:

NONCE=`grep -m 1 "form_nonce" template.html | awk -F '"' '{print $8}'`

但问题是我并不总是以这种格式接收输入,所以有时它是7,8或9.有没有办法关注value关键字而不是假设值的顺序?

编辑:有多个输入,名称=“form_nonce”

1 个答案:

答案 0 :(得分:1)

使用grepsed

grep -m 1 "form_nonce" template.html |sed -e 's/.*value="//'|sed -e 's/"\/>//'

在第一个sed替换中,取代value="的所有内容都会被替换,而第二个sed结尾标记中的所有内容都会被替换。