2017-09-04 6 views
0

Ich bin ziemlich neu in diesem Curl Scripting und ich bin auf der Suche nach einer Möglichkeit, einen Text aus einem Token wie Wert einfügen, wenn ich eine bestimmte Website.Curl - Drucken Wert mit Grep

Zur Zeit hat ich:

echo $a_opensite | grep -E -o 'value=\".*==.*' | awk '{print $1}' > 
        /Users/MZComputer/Downloads/10Step/VIEWSTATE_file; 

, die den Wert unten in einer Datei namens schreibt:

VIEWSTATE_file****value="bdC7M0jCKxJNSfHjUVv+4MMt3/ysSLviYkIQnnpntK3qNCarg7H012UIllu+XBDepbWYWktNdf3EBgd3xd0...UVv"**** 

aber der Text value=" ist, was ich bin in der Lage, die richtigen Token zu erhalten zu verwenden. Ich möchte jedoch nicht die value="...." in die Datei aufnehmen, nur den Text in die Anführungszeichen einschließen - ohne die Anführungszeichen selbst.

Irgendwelche Ideen, wie ich erreichen kann?

Antwort

1

Verwenden Sie die folgende Zeile:

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

GNU grep Angenommen, ich würde seine -P Option und Perl-Stil Lookbehind/Look-Ahead-Ausdrücke verwenden. Zum Beispiel:

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

Die interessanten Bits sind:

  1. (?=\") - das ist ein Look-Ahead- Ausdruck. Er entspricht der leeren Zeichenfolge, wenn der angegebene Regex folgt, in diesem Fall \". Im obigen Beispiel wird die leere Zeichenfolge kurz vor " bar am Ende des angegebenen Eingangs angezeigt.
  2. (?<=value=\") - dies ist ein Lookbehind Ausdruck. Sie entspricht der leeren Zeichenfolge, wenn ihr die angegebene Regex vorangestellt ist, in diesem Fall value=\". Im obigen Beispiel entspricht sie der leeren Zeichenfolge kurz vor something interesting.
  3. .*? beliebige Folge von Zeichen nicht gierig, was das heißt, wenn die Leitung value="stuff" garbage="more stuff" liest werde es stuff" garbage="more stuff nur stuff und nicht überein.

mit der Option -o Kombiniert wird dies die Zeichenfolge zwischen value=" und den nächsten " isolieren.