From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Wed, 19 Mar 2003 05:45:29 +0700 From: Olga To: community@altlinux.ru Subject: Re: [Comm] awk question Message-Id: <20030319054529.59917b05.laedel@pochtamt.ru> In-Reply-To: <3E7789D7.602@14000.ru> References: <3E7789D7.602@14000.ru> X-Mailer: Sylpheed version 0.7.6claws49 (GTK+ 1.2.10; i686-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=KOI8-R Content-Transfer-Encoding: 8bit Sender: community-admin@altlinux.ru Errors-To: community-admin@altlinux.ru X-BeenThere: community@altlinux.ru X-Mailman-Version: 2.0.9 Precedence: bulk Reply-To: community@altlinux.ru List-Unsubscribe: , List-Id: List-Post: List-Help: List-Subscribe: , List-Archive: Archived-At: List-Archive: List-Post: Vadim Vinichenko пишет: > Уважаемые коллеги, > > Подскажите, пожалуйста, можно ли, используя 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 |