Мануал тут http://bug.lfs06.ru/rtfm/lang/awk/awk1.0.4/


Можно ещё примерно так:
awk '{i=split( $0, fields, "\t"); for(j=1; j<=i; j++) if (fields[i] 
=="from") {print (fields[i], "\t", $3);}}'  log.txt > output.log

Не проверял.

Vyacheslav Karamov пишет:
> Gочитай awk manual. Там несложно.
> Задача сводится к перебору всех полей (т.е. столбцов) и нахождении поля 
> равного "from" и печати третьего поля,  и поля номер_поля_from + 1.
> Вывод перенаправить в файл.
>
> Pivushkov Alexandr пишет:
>   
>>   Здравствуйте Уважаемое сообщество. Позволю себе то же спросить не в 
>> тему рассылки. Не обессудьте уж...
>>
>>   Кому интересно, подскажите пожалуйста, как из строк (пусть будет файл 
>> source.log):
>> 20006       0          231 nat 1 tcp from 213.180.уу.х  to 213.180.zzz.f 
>> dst-port 22 via em1 keep-state
>> 10000       0          24435 allow tcp from 213.180.уу.х  to 
>> 213.180.zzz.f dst-port 80,443,3389,8000 via em1 keep-state
>>
>>
>> вытащить число, которое стоит в третьей позиции (здесь это "231" и 
>> "24435") и IP адрес. Проблема в том, что IP может стоять где угодно в 
>> строке, но перед ним обязательно должен стоять "from".
>>
>> уу -меняется от 55 до 76
>> х меняется от 3 до 8
>>
>> z и f - не рассматриваются.
>>
>>
>>   Необходимо создать файл output.log с двумя колонками:
>>
>>      Число  "пробел"   IP
>>
>> Например здесь будет так:
>> 231 213.180.уу.х
>> 24435 213.180.уу.х
>> ...
>>
>>
>>   
>>     
>
>
>   


-- 
ubuntu-ru mailing list
ubuntu-ru@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-ru

Дати відповідь електронним листом