Ne, není, soubory nejsou adresovatelné na řádky.
Neexistuje žádný způsob, jak najít začátek řádku n v konstantním čase v textovém souboru. Musíte procházet souborem a počítat nové řádky.
Použijte ten nejjednodušší/nejrychlejší nástroj, který máte k práci. Pro mě pomocí head
vydělává hodně větší smysl než grep
, protože to druhé je mnohem složitější. Neříkám „grep
je pomalý", to opravdu není, ale byl bych překvapen, kdyby byl rychlejší než head
pro tento případ. To by byla chyba v head
, v podstatě.
s GNU-grep byste mohli říct jen
grep --context=10 ...
# print line number 52
sed -n '52p' # method 1
sed '52!d' # method 2
sed '52q;d' # method 3, efficient on large files
Metoda 3 účinná u velkých souborů
nejrychlejší způsob zobrazení konkrétních řádků
Našel jsem dvě další řešení, pokud znáte číslo řádku, ale nic jiného (není možný grep):
Za předpokladu, že potřebujete řádky 20 až 40,
sed -n '20,40p;41q' file_name
nebo
awk 'FNR>=20 && FNR<=40' file_name
Při použití sed
je efektivnější ukončit zpracování po vytištění posledního řádku, než pokračovat ve zpracování až do konce souboru. To je důležité zejména v případě velkých souborů a tiskových linek na začátku. Chcete-li tak učinit, sed
výše uvedený příkaz zavádí instrukci 41q
abychom zastavili zpracování po řádku 41, protože v příkladu nás zajímají pouze řádky 20-40. Budete muset změnit 41 na libovolný poslední řádek, který vás zajímá, plus jeden.