[Comm] awk question

Olga =?iso-8859-1?q?laedel_=CE=C1_pochtamt=2Eru?=
Ср Мар 19 01:45:29 MSK 2003


Vadim Vinichenko <vnv на 14000.ru> пишет:

> Уважаемые коллеги,
> 
> Подскажите, пожалуйста, можно ли, используя awk (разделитель - пробел), 
> заставить его считать подстроку в кавычках одним полем, независимо от 
> наличия пробелов внутри. То есть, для:
> 
> aaa bbb "ccc ddd eee"
> 
> $3 должно быть равно "ccc ddd eee" (или ccc ddd eee, без кавычек).
> 
> Я, собственно, разбираю лог веб-сервера, а там строка идентификации 
> агента содержит пробелы. Что-то я не могу найти ответа на свой вопрос в 
> документации. Или это уже не к awk?

Если нужны все поля, то можно выдрать из строки заковыченное и использовать
отдельно (параллельно с оставшейся частью).
Примерно так (ведь в логе, кажется, только одно заковыченное поле):
{quot=$0; gsub("(.* \"|\" .*)", "", quot);  gsub("\".*\"", ""); 
#собственно обработка quot и полей из $0
}
заковыченное будет в переменной quot, остальное - в $0, которую можно
анализировать как обычно.

Ну а если нужно только заковыченное - проще переопределить разделитель:
gawk -F \" 'Ваш скрипт'

-- 
 С уважением,                           (>|<)
 OL                                       |



Подробная информация о списке рассылки community