Мой запрос состоит в том, чтобы извлечь значение между двойными кавычками ""
. Пример ввода:
10.219.41.68 - - - [11 / Jun / 2014: 10: 23: 04 -0400] Сек: 0 MicSec: 1797 "GET / балансировщик-менеджер 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 "
У меня есть большие файлы журналов, поэтому значения могут варьироваться для каждой строки, необходимо извлечь значение между первым появлением двойных кавычек ...
Ожидаемый результат:
GET /balancer-manager HTTP/1.1
Кто-нибудь есть идеи, то, пожалуйста, предложите.
Ответы:
Вы можете просто использовать
cut
для этого:-d '"'
говоритcut
использовать двойную кавычку в качестве разделителя полей.-f2
говорит ему взять второе поле, которое находится между первой и второй кавычками - или первой строкой в кавычках, именно то, что вы хотите.источник
%!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
?Способ использования
awk
Если по какой-то абсурдной причине ваши методы HTTP на самом деле
0
и вы хотите вывести этиисточник
$2
NULL?0
не только ноль?Так как
awk
иperl
решение уже при условии, что я хотел попробоватьsed
:источник
Вы можете сделать это многими способами.
С
awk
:С
perl
:источник
обработка указанных входных чисел
источник