GNU tar не игнорирует каталоги в gitignore с --exclude-vcs-ignores

Вот несколько «чистых» awkрастворов:

Если индексы всегда представляют собой одну и ту же возрастающую целочисленную последовательность (6115 -6119 ), как в вашем образце данных -, вы можете использовать алгоритмический «ярлык»:

awk '{a[$1]=$0} !(NR%4){for(i=6115;i<6119;print a[i++]);}'

Это делает

  • Добавить все строки в массив a, распределенные по позициям индекса 6115 -6119
  • В каждой 4-й строке(!(NR%4))выполните цикл по содержимому массива для печати в нужном порядке.

Если ваши числовые индексы всегда являются четырьмя одинаковыми, а не возрастающей целочисленной последовательностью, вам придется сортировать:

awk '{a[$1]=$0} !(NR%4){asort(a,b); for(i=1;i<5;print b[i++]);}'

Примечание :Это относится к GNU awk, другие могут не поддерживать asort.


Если бы каждый блок -из -четырех мог иметь разные числовые идентификаторы:

awk '{a[$1]=$0} !(NR%4){asort(a); for(i=1;i<5;print a[i++]); delete a}'

Примечание :TIL от @Gilles self -ответ (+2 )это использование deleteеще не ()POSIX, но повсеместно поддерживается .


Версия с правильным™ использованиемdelete:

awk '{a[$1]=$0} !(NR%4){asort(a); for(i=1;i<5;delete a[i++]){print a[i]}}'

Версия без удаления, использующая больше памяти и размеров:

awk '{a[n][$1]=$0} !(NR%4){asort(a[n]); for(i=1;i<5;print a[n][i++]); n++}

2
24.08.2019, 08:48
0 ответов

Теги

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