Извлечение значения между двойными кавычками

Мой запрос заключается в извлечении значения между двойными кавычками "" . Пример ввода:

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 

У кого-нибудь есть идея, пожалуйста, предложите.

5 Solutions collect form web for “Извлечение значения между двойными кавычками”

Вы можете просто использовать cut для этого:

 $cut -d '"' -f2 < logfile GET /balancer-manager HTTP/1.1 

-d '"' говорит cut чтобы использовать двойную кавычку в качестве своего разделителя полей. -f2 сообщает, чтобы он взял второе поле, которое находится между первой и второй кавычками или первой цитируемой строкой, именно то, что вы хотите.

Способ использования awk

 awk -F'"' '$0=$2' file 

Если по какой-то абсурдной причине ваши HTTP-методы фактически равны 0 и вы хотите вывести эти

 awk -F'"' '{$0=$2}1' file 

Поскольку awk и perl решения уже предоставлены, я хотел попробовать sed :

 sed 's/[^"]*"\([^"]*\)".*/\1/' file 

Вы можете сделать это разными способами.

С awk :

 $ awk -F'"' '{print $2}' file GET /balancer-manager HTTP/1.1 

С perl :

 $ perl -F'"' -anle 'print $F[1]' file GET /balancer-manager HTTP/1.1 

обработка цитируемых номеров ввода

 echo 1234 | awk '{ i=strtonum($1) ; printf( "%s %d\n",$1, i)}' # no problem echo '"1234"' | awk '{ i=strtonum($1) ; printf( "%s %d\n",$1, i)}' # does not work echo '"1234"' | awk '{ gsub("\"",""); i = $1 ; printf( "%s %d\n",$1, i)}' # works 
  • Вставить текст в определенные строки файла?
  • awk csv добавляет числа файлов
  • awk отправить сообщение, если
  • Перемещение согласованной строки над другой совпадающей строкой с помощью sed
  • awk: разобрать и записать в другой файл
  • Усреднение по многим строкам данных
  • Как удалить символы из столбца с помощью awk
  • Подберите patternA и напечатайте его только тогда, когда сопоставляется patternB, включая следующую строку
  • Объединить столбец на основе 2-го столбца
  • Чтобы добавить номера строк в каждой строке с помощью команды оболочки?
  • Как обрабатывать совпадения строк awk?
  • Interesting Posts
    Linux и Unix - лучшая ОС в мире.