Подскажите пожалуйста, как мне с помощью awk посмотреть в строке последние 2-3 поля.
Код: Выделить всё
awk '/HTTP\/1.[0-3]" 200/ {print $1,$(NF-1),$NF}' /var/log/nginx/acces.log
Модераторы: /dev/random, Модераторы разделов
Код: Выделить всё
awk '/HTTP\/1.[0-3]" 200/ {print $1,$(NF-1),$NF}' /var/log/nginx/acces.log
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Это если не понимать что происходит. NF целочисленная беззнаковая переменная определяет количество полей в записи. Например, 5, а значит поле $4 это то же самое что $(NF-1) и $(5-1)
Это же процессор и целый язык программирования - ваш конструктор. Напишите функцию, например:
Код: Выделить всё
#!/bin/bash
awk '
function vec(start, end) {
k = start>end?-1:1
for(i=start; i!=end; i+=k) {
printf("%s%s", $i, OFS)
}
printf("%s%s", $i, ORS)
}
{vec(5, 3)}
{vec(3, 5)}
' file
Код: Выделить всё
function vec(start, end) {
k = start>end?-1:1
for(i=start; i!=end; i+=k) {
printf("%s%s", $i, OFS)
}
printf("%s%s", $i, ORS)
}
Shell
awk -i funcs '{vec(3,5); vec(5,3)}' file
Shell
mkdir lib
mv funcs lib
export AWKPATH=$PWD/lib
awk -i funcs '{vec(3,5); vec(5,3)}' file