Мануал тут 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