Рассмотрим этот тестовый файл:
$ cat input.csv
a,b,c,d,e,f,g,h,i,j
По крайней мере, с помощью GNU awk мы можем напечатать первые пять ( или другое количество) таких полей:
$ awk -F, '{NF=5; print}' OFS=, input.csv
a,b,c,d,e
Для тех, кто ценит лаконичность, а не ясность, мы могли бы эквивалентно написать:
$ awk -F, '{NF=5;} 1' OFS=, input.csv
a,b,c,d,e
Чтобы убрать последние 2 поля, независимо от того, сколько полей предшествует этим двум:
$ awk -F, '{NF-=2; print}' OFS=, input.csv
a,b,c,d,e,f,g,h
Для запуска и остановки печати с произвольными полями необходим цикл:
$ awk -v first=3 -v last=6 -F, '{for (i=first;i<=last;i++) printf "%s%s",$i,(i==last?ORS:OFS)}' OFS=, input.csv
c,d,e,f
Для печати из третьего поля и динамического исключения последних двух полей:
$ awk -v first=3 -F, '{last=NF-2; for (i=first;i<=last;i++) printf "%s%s",$i,(i==last?ORS:OFS)}' OFS=, input.csv
c,d,e,f,g,h