Есть ли способ ограничить объем памяти, который конкретный процесс может использовать в Unix? [дубликат]

Диапазоны, начинающиеся с первого поля

Рассмотрим этот тестовый файл:

$ 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
37
23.11.2010, 23:24
0 ответов

Теги

Похожие вопросы