Самый быстрый способ нарезки файла следующий:
awk 'FNR>n{exit}(FNR>=m)' m=5 n=10 file
Если вы хотите сделать это возможным, метод является обобщенным c и также работает с «КОНЕЦ» файла, вы может сделать:
awk '(FNR<m){next}1;(FNR==n){exit}' m=5 n=10 file # cut line 5 to 10
awk '(FNR<m){next}1;(FNR==n){exit}' m=5 n="EOF" file # cut line 5 till EOF
awk '(FNR<m){next}1;(FNR==n){exit}' m=5 n=-1 file # cut line 5 till EOF
awk '(FNR<m){next}1;(FNR==n){exit}' m=1 n=10 file # cut line 1 till 10
awk '(FNR<m){next}1;(FNR==n){exit}' m=1 n=10 file # cut line "BOF" till 10
Причина, по которой это работает, заключается в том, что строки конвертируются в цифру c НОЛЬ при использовании с оператором нумерации c, таким как "<
или ==
(последний цифра c, поскольку FNR
является целым числом.
FNR
: номер записи текущего файла next
: прекратить обработку этой записи и перейти к следующей записи в файле exit
: прекратить любую обработку файла и выполнить инструкцию END
, если она доступна (здесь их нет)