Пропустите первые 6 строк/строк в текстовом файле с awk

Если Ваше встроенное микропрограммное обеспечение является UEFI, а не старомодным BIOS, можно использовать UEFI для прямой начальной загрузки Ose, не имея необходимость использовать GRUB. И 64-разрядный Windows 7 и последние версии Linux поддерживают начальную загрузку UEFI.

43
23.04.2015, 07:01
4 ответа

Используйте любой из двух шаблонов:

NR>6 { this_code_is_active }

или это:

NR<=6 { next }
{ this_code_is_active }

Используйте FNR вместо NR, если у вас есть много файлов в качестве аргументов awk и хотите пропустить 6 строк в каждом файле.

66
27.01.2020, 19:34

Попробуйте:

awk 'FNR > 6 { #process here }' file
33
27.01.2020, 19:34

Вы также можете пропустить произвольное количество строк в начале или в конце файла, используя программы headили tail.

По вашему конкретному вопросу

tail input.txt -n+7 | program.awk

подойдет, если ваш файл program.awkявляется исполняемым. В противном случае вы можете использовать

tail input.txt -n+7 | awk -f program.awk

Таким образом, вы сохраните сравнение для каждой строки, и вам не нужно менять логику вашего кода AWK.

tailначнет потоковую передачу текста, начиная с седьмой строки, пропуская шесть первых строк.

Это не сильно скажется на производительности, особенно если текстовый процесс прост благодаря кэшированию. Тем не менее, для длинных файлов и многократного использования в облачной среде можно немного сэкономить.

8
27.01.2020, 19:34

Еще один:

$ cat print_from.awk

#print 20 lines from line 6 (from your file: 0.3 3.3)
BEGIN{n=0}
/^0.3 3.3.*/ {n=NR; m=n+20}
{
  if (n > 1 && NR < m) {print $1} 
}

выполнить с:

awk -f print_from.awk your-text-file
1
27.01.2020, 19:34

Теги

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