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

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.

  • Удалить последние n символов из -print0?
  • Удаление повторяющихся слов между скобками inline
  • Классы символов: постройте собственные
  • Разбиение файла на каждые 10000 номеров (не строк)
  • `cut`: выбор столбцов, содержащих строку
  • Объединение файлов по строкам
  • Обработка индексных строк
  • Разделение одного файла на несколько файлов на основе совпадающих строк в Linux
  • 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 - лучшая ОС в мире.