[awk]Отрезать от строки начальные поля
echo 'a b c d' | awk '{print $3 " " $4;}'
$echo 'a b c d e f' | awk '{print $3 " " $4;}'
c d
echo 'a b c d e f' | cut -d' ' -f3- --output-delimiter=:
Хех. Спасибо!
Оставить комментарий
apl13
Как бы поизящнее сделать субж?Я, было, решил в лоб:
$echo 'a b c d' | awk -v OFS=":" '{$1 = ""; $2 = ""; print}'::c:d
Получается строка, в которой первые поля стали пустыми - но остались, что выражается в OFS-ах, с которых начинается результирующая строка.
Из глубины веков, конечно, пришел метод, рожденный на Си:
$echo 'a b c d' | awk -v OFS=":" '{for(i = 3; i <= NF; i++) $(i-2) = $i; NF -= 2; print}'c:d
Но хочется изящнее...
Неужели нельзя?
ЗЫ. Во избежание спекуляций - это гавк, и он без --posix.