Инструмент на Bash за получаване на n-тия ред от файл
Има ли "каноничен" начин да се направи това? Използвах head -n | tail -1
, което върши работа, но се чудех дали има инструмент на Bash, който специално извлича ред (или набор от редове) от файл.
Под "каноничен" имам предвид програма, чиято основна функция е да прави това.
535
3
head
и тръба сtail
ще бъдат бавни за огромен файл. Бих предложилsed
по следния начин:Където
NUM
е номерът на реда, който искате да отпечатате; така например,sed '10q;d' file
, за да отпечатате десетия ред наfile
.Обяснение:
NUMq
ще излезе веднага, когато номерът на реда еNUM
.d
ще изтрие реда, вместо да го отпечата; това е забранено за последния ред, тъй катоq
кара останалата част от скрипта да бъде прескочена при прекратяване.Ако имате
NUM
в променлива, ще трябва да използвате двойни кавички вместо единични:ще отпечата втория ред
2011-ти ред
от ред 10 до ред 33
1-ви и 3-ти ред
и така нататък...
За добавяне на редове със sed можете да проверите това:
https://stackoverflow.com/q/15555781/#16246806
За целта можете да използвате и Perl: