Mi consulta es extraer el valor entre comillas dobles ""
. La entrada de muestra es:
10.219.41.68 - - - [11 / Jun / 2014: 10: 23: 04 -0400] Sec: 0 MicSec: 1797 "GET / balancencer-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 "
Tengo archivos de registro grandes, por lo que los valores pueden variar para cada línea, necesito extraer el valor entre la primera aparición de comillas dobles ...
Rendimiento esperado:
GET /balancer-manager HTTP/1.1
Alguien tiene alguna idea, por favor sugiérale.
Respuestas:
Puedes usar
cut
para esto:-d '"'
le dicecut
que use una comilla doble como delimitador de campo.-f2
le dice que tome el segundo campo, que está entre la primera y la segunda cita, o la primera cadena entre comillas, exactamente lo que desea.fuente
%!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
?Una forma de usar
awk
Si por alguna razón absurda sus métodos HTTP son en realidad
0
y desea generar estosfuente
$2
es nulo?0
, no solo nulo?Como ya se proporcionan soluciones
awk
yperl
, quería probarsed
:fuente
Puedes hacerlo de muchas maneras.
Con
awk
:Con
perl
:fuente
procesamiento de números de entrada citados
fuente