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
cutpara esto:-d '"'le dicecutque use una comilla doble como delimitador de campo.-f2le 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
awkSi por alguna razón absurda sus métodos HTTP son en realidad
0y desea generar estosfuente
$2es nulo?0, no solo nulo?Como ya se proporcionan soluciones
awkyperl, quería probarsed:fuente
Puedes hacerlo de muchas maneras.
Con
awk:Con
perl:fuente
procesamiento de números de entrada citados
fuente