Meine Frage ist, den Wert zwischen doppelten Anführungszeichen zu extrahieren ""
. Beispieleingabe ist:
10.219.41.68 - - - [11 / Jun / 2014: 10: 23: 04 -0400] Sec: 0 MicSec: 1797 "GET / Balancer-Manager HTTP / 1.1" 200 28980 "-" Curl / 7.15.5 (i386 -redhat-linux-gnu) libcurl / 7.15.5 OpenSSL / 0.9.8b zlib / 1.2.3 libidn / 0.6.5 "
Ich habe große Protokolldateien, daher können die Werte für jede Zeile unterschiedlich sein. Der Wert muss zwischen dem ersten Auftreten von doppelten Anführungszeichen extrahiert werden.
Erwartete Ausgabe:
GET /balancer-manager HTTP/1.1
Hat jemand eine Idee dann bitte vorschlagen.
Antworten:
Sie können nur dafür verwenden
cut
:-d '"'
Sagtcut
, dass ein doppeltes Anführungszeichen als Feldbegrenzer verwendet werden soll.-f2
weist es an, das zweite Feld zwischen dem ersten und dem zweiten Anführungszeichen zu nehmen - oder die erste Zeichenfolge in Anführungszeichen, genau das, was Sie wollen.quelle
%!cut -d '"' -f2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58
?Ein Weg mit
awk
Wenn aus irgendeinem absurden Grund Ihre HTTP-Methoden tatsächlich sind
0
und Sie diese ausgeben möchtenquelle
$2
null ist?0
nicht nur null?Da eine
awk
undperl
Lösungen bereits vorhanden sind, wollte ich versuchensed
:quelle
Sie können es auf viele Arten tun.
Mit
awk
:Mit
perl
:quelle
Verarbeitung von Eingabenummern
quelle