2017-04-21 7 views
0
req=`bxp report change-summary $startDate $startDate -iad -y | grep -A2 "Request ID" 

Das obige Skript gibt dem unten AusgangShell cut Befehl grep

Request ID ------------ 10481066 

ich nur die Nummer 10481066 schneiden mag, habe ich versucht, mit der Nummer grep und anderen cut, die nicht funktioniert. Kann jemand vorschlagen?

+0

Ist 'Request ID - ---------- 10481066' alle in einer Zeile? – anubhava

+0

Die Nummer ist das vierte * Leerzeichen * getrennte Feld in der Zeile. Sollte mit dem Befehl 'cut' (http://man7.org/linux/man-pages/man1/cut.1.html) sehr einfach zu bekommen sein. –

Antwort

0

Nur ein paar Alternativen zu awk:

$ egrep -o '[0-9]+' <<<"This is a line with Request ID ------------ 10481066" 
$ cut -d' ' -f4 <<<"Request ID ------------ 10481066" 
$ egrep -o '[0-9]+$' <<<"This is a line with number 35546 with Request ID ------------ 10481066" 

Alle oben Rückkehr 10481066

PS: Cut Standard Delimiter ist Registerkarte, müssen Sie mitdeklarierenOption Leerzeichen als Trennzeichen, um mit Ihren Daten zu arbeiten.

1

Angenommen, Ihre Ausgabe Request ID ------------ 10481066 ist alles in einer einzigen Zeile, können Sie einfach grep ersetzen mit diesem awk Befehl:

req=$(bxp report change-summary $startDate $startDate -iad -y|awk '/Request ID/{print $NF}') 
0

Ich habe gerade auf diese Weise

req = bxp report change-summary $startDate $startDate -iad -y | grep -A2 "Request ID" | grep -E "^[0-9]"

jede mögliche Weise, Dank für Ihre Hilfe

+0

Das ist eine ineffiziente Art, es zu tun, da es 2 zusätzliche Befehle beinhaltet. – anubhava

0

ich tun würde, die letzte Zeichenfolge Manipulation

req="Request ID ------------ 10481066" 
result=${req%-*}