Как запустить 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 
  • Как найти и фильтровать определенный столбец в CSV-файле?
  • Нужно разбирать разделы текста из повторяющихся «группировок» строк внутри файла
  • Как я могу вывести stdout и stderr и записать их в файл?
  • Объединение столбцов в файл с помощью Awk
  • Awk - значения совпадения между двумя файлами и создание нового файла
  • частота появления
  • Использовать awk для отправки списка символических ссылок на файлы в каталог с пробелами в имени?
  • избежание одной точки с двойной обратной косой чертой - awk
  • Используйте awk для разделения строки на массив и использования значений этого массива при вызове оболочки
  • Перемещение строк данных в один столбец при сохранении заголовков строк
  • Разделить файл на основе требуемой строки
  • Linux и Unix - лучшая ОС в мире.