我在这个curl脚本中相当新,我正在寻找一种方法,当我点击特定网站时粘贴来自代码的文本。
目前我有:
echo $a_opensite | grep -E -o 'value=\".*==.*' | awk '{print $1}' >
/Users/MZComputer/Downloads/10Step/VIEWSTATE_file;
将以下值写入名为:
的文件中VIEWSTATE_file****value="bdC7M0jCKxJNSfHjUVv+4MMt3/ysSLviYkIQnnpntK3qNCarg7H012UIllu+XBDepbWYWktNdf3EBgd3xd0...UVv"****
但是我可以使用文本value="
来获取正确的令牌。但是,我不想在文件中包含value="...."
,只是想在引号中包含文本 - 不包括引号本身。
我能做到的任何想法?
答案 0 :(得分:1)
使用以下行:
echo $a_opensite | grep -E -o 'value=\".==.' | awk '{print $1}' | sed 's/value="\([^"]*\)"/\1/' > /Users/MZComputer/Downloads/10Step/VIEWSTATE_file;
答案 1 :(得分:0)
假设使用GNU grep,我将使用其-P
选项和Perl风格的lookbehind / lookahead表达式。例如:
$ echo 'foo value="something interesting" bar' | grep -Po '(?<=value=\").*?(?=\")'
something interesting
有趣的是:
(?=\")
- 这是 lookahead 表达式。它匹配空字符串iff后跟指定的正则表达式,在本例中为\"
。在上面的示例中,它将在提供的输入结尾处" bar
之前匹配空字符串。(?<=value=\")
- 这是 lookbehind 表达式。它匹配空字符串iff前面有指定的正则表达式,在这种情况下value=\"
在上面的例子中,它匹配something interesting
之前的空字符串。.*?
匹配任何字符序列非贪婪,也就是说,如果该行显示为value="stuff" garbage="more stuff"
,那么它只会与stuff
匹配而不是stuff" garbage="more stuff
。结合-o
选项,这会将value="
与下一个"
之间的字符串隔离开。