Как запустить awk для некоторого количества строк.?

Я хочу извлечь некоторые строки с awk . Можно ли выполнить следующую задачу:

 ls -l | awk 'BEGIN FOR(i=122;i<=129;i++) FNR==i' 

Как я могу отображать детали с номеров строк от 122 до 129?

3 Solutions collect form web for “Как запустить awk для некоторого количества строк.?”

Вы не поняли, как работает awk . Указанная «программа» всегда выполняется один раз для каждой строки (или «запись» на awk-языке) ввода, нет необходимости в FOR или какой-либо подобной конструкции. Просто используйте:

подробный метод

 ls -l | awk 'NR>=122 && NR<=129 { print }' 

более компактный метод

 ls -l | awk 'NR==122,NR==129' 

Один из них дает диапазон для NR , который является «Запись номера», обычно это текущая строка awk обрабатывает.

Еще один альтернативный метод – использовать sed :

 ls -l | sed -ne '122,129p' 

Но если, как ваш вопрос, важно использовать awk для этого, пойдите с комментарием manatwork на ответ Zrajm. Как говорится в документации awk:

  A pattern may consist of two patterns separated by a comma; in this case, the action is performed for all lines from an occurrence of the first pattern though an occurrence of the second. 

Поэтому, если вы хотите, вы также можете сделать более сложные условия. Например:

 ls -l | awk 'NR==122,/foobar/' 

Это начнет выводиться по строке 122 и продолжит работу до строки, содержащей слово «foobar».

Если вы сообщите нам фактический прецедент, мы можем помочь с ответами, которые обеспечивают лучшее решение. Я беспокоюсь, что это звучит как проблема XY .

Другой способ сделать это (хотя я предпочитаю метод awk ), используя coreutils:

 ls -l | tail -n +122 | head -n 8 
  • Как удалить несколько строк из файла с помощью оболочки
  • Измените определенную часть файла с помощью сценария оболочки
  • Регулярные выражения внутри строки в AWK, используя if / then структуру управления?
  • команда sed для обмена символами
  • nmap-скрипт, необходимый для вывода текста в формат csv
  • Объединение 2 файлов с использованием совпадения полей
  • AWK: Как поместить поле ($ 1) внутри регулярного выражения, чтобы выбрать все префиксы?
  • Упрощение однострочного вызова с помощью sed и нескольких вызовов awk
  • Количество строк с определенным значением в столбце для всех файлов в каталоге рекурсивно
  • awk для извлечения аргумента опции
  • Смешанное прописное и строчное слово в слове
  • Linux и Unix - лучшая ОС в мире.