2017-09-04 86 views
0

我在這個curl腳本編寫方面相當新穎,我正在尋找一種方法,當我點擊特定網站時,可以像令牌一樣粘貼文本。Curl - 使用grep打印值

目前我有:

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="....",只是想在引號內包含文本 - 不包括引號本身。

任何想法如何實現?

回答

1

使用以下命令行:

echo $a_opensite | grep -E -o 'value=\".==.' | awk '{print $1}' | sed 's/value="\([^"]*\)"/\1/' > /Users/MZComputer/Downloads/10Step/VIEWSTATE_file; 
0

假設的GNU grep我會使用它-P選項和Perl式的回顧後/超前表達式。例如:

$ echo 'foo value="something interesting" bar' | grep -Po '(?<=value=\").*?(?=\")' 
something interesting 

有趣位是:

  1. (?=\") - 這是一個先行表達。它匹配空字符串,如果它後跟指定的正則表達式,在本例中爲\"。在上面的例子中,它將匹配在提供的輸入末尾" bar之前的空字符串。
  2. (?<=value=\") - 這是一個後視的表達。它匹配空字符串,如果它前面有指定的正則表達式,在本例中爲value=\"在上例中,它將匹配something interesting之前的空字符串。
  3. .*?匹配字符非貪婪的任何序列,這是說,如果行讀取value="stuff" garbage="more stuff"這將只匹配stuff,而不是stuff" garbage="more stuff

-o選項相結合,這將隔離value="和下"之間的字符串。