Есть ли команда, которая выводит файл с нумерацией строк, начинающий нумерацию в определенной строке?

cat -n file выводит file с нумерацией строк, но как я могу указать, на какой строке начать нумерацию? Есть ли команда, которая может это сделать?

Я думал о том, что, возможно, раскалывал процесс на несколько команд. Если я хочу начать нумерацию строк в строке N текстового файла file.txt , тогда:

  1. Распечатайте первые строки N-1 , à la head -$((N-1)) file.txt
  2. Распечатайте оставшиеся N строк, пронумерованных: tail -n N file.txt | cat -n tail -n N file.txt | cat -n

Но второй шаг невозможен, если вход от stdin ; первый шаг будет потреблять все это. Мне нужно создать временный файл для чтения, а затем удалить его, AFAIK.

  • Как суммировать числа внутри многих 2D-массивов
  • Как я могу распечатать полное объявление функции любой функции, которая содержит в себе определенную строку?
  • Найти файлы, содержащие ключевое слово, и показать только путь к файлу и номер строки
  • вставка данных в конкретный раздел конфигурационного файла с возможностью
  • Изменение числа в строке чисел
  • Замена места для команды paste
  • Классы символов: постройте собственные
  • Как извлечь размер файла с помощью du
  • One Solution collect form web for “Есть ли команда, которая выводит файл с нумерацией строк, начинающий нумерацию в определенной строке?”

    Вы можете использовать awk для этого:

     awk 'NR >= n { printf("%6d ", NR-n+1) } 1' n=3 

    Для строк, где текущий номер записи (NR) больше или равен n (передается как переменная), напечатайте префикс строки, начиная с 1. 1 в конце awk коротко для печати текущей строки.

    Вы также можете использовать head(1) , поскольку она перестает потреблять входные данные, когда она считывает количество строк, в которых она нуждается:

     { head -$((N-1)); cat -n; } 

    Вы можете подключиться к этому или перенаправить файл:

     cat foo | { head -$((N-1)); cat -n; } { head -$((N-1)); cat -n; } < foo 
    Linux и Unix - лучшая ОС в мире.