Ma requête consiste à extraire la valeur entre guillemets doubles ""
. L'échantillon d'entrée est:
10.219.41.68 - - - [11 / juin / 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 "
J'ai de gros fichiers journaux, donc les valeurs peuvent varier pour chaque ligne, j'ai besoin d'extraire la valeur entre la première occurrence de guillemets doubles…
Production attendue:
GET /balancer-manager HTTP/1.1
N'importe qui a une idée, veuillez suggérer.
Réponses:
Vous pouvez simplement utiliser
cut
pour cela:-d '"'
indiquecut
d'utiliser un guillemet double comme délimiteur de champ.-f2
lui indique de prendre le deuxième champ, qui est entre les premier et deuxième guillemets - ou la première chaîne entre guillemets, exactement ce que vous voulez.la source
%!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
?Une façon d'utiliser
awk
Si, pour une raison absurde, vos méthodes HTTP sont réellement
0
et que vous souhaitez les afficherla source
$2
est nul?0
non seulement nulle?Puisqu'une
awk
et desperl
solutions sont déjà fournies, je voulais essayersed
:la source
Vous pouvez le faire de plusieurs façons.
Avec
awk
:Avec
perl
:la source
traitement des numéros d'entrée cités
la source