Вы можете сделать что-то вроде:
head -n<lineno> <file> | tail -n1
Это даст вам <lineno>
строки, а затем только последнюю строку вывода (вашу строку).
Редактировать : Кажется, все решения здесь довольно медленные.Однако по определению вам придется проходить итерации по всем записям, так как операционная система не имеет возможности анализировать строчно-ориентированные файлы, поскольку файлы ориентированы на байты.(В некотором смысле все эти программы собираются подсчитать количество символов \n
или \r
.) Вместо отличного ответа я также представлю временные параметры в моей системе нескольких из этих команд!
[mjschultz@mawdryn ~]$ time sed -n '145430980p' br.txt
0b10010011111111010001101111010111
real 0m25.871s
user 0m17.315s
sys 0m2.360s
[mjschultz@mawdryn ~]$ time head -n 145430980 br.txt | tail -n1
0b10010011111111010001101111010111
real 0m41.112s
user 0m39.385s
sys 0m4.291s
[mjschultz@mawdryn ~]$ time awk 'NR==145430980{print;exit}' br.txt
0b10010011111111010001101111010111
real 2m8.835s
user 1m38.076s
sys 0m3.337s
Итак, в моей системе выглядит, что решение sed -n '<lineno>p' <file>
самое быстрое!