GNU/Linux >> Znalost Linux >  >> Linux

Rychlý unixový příkaz pro zobrazení konkrétních řádků uprostřed souboru?

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.


Linux
  1. Jak extrahovat soubor tar.gz v Linuxu pomocí příkazového řádku

  2. 4 nástroje ke stažení libovolného souboru pomocí příkazového řádku v Linuxu

  3. Jak mohu použít řádky souboru jako argumenty příkazu?

  1. Manipulace s textem na příkazovém řádku pomocí sed

  2. Používání Disku Google z příkazového řádku systému Linux

  3. Jak procházet řádky souboru?

  1. Jak vložit text před první řádek souboru?

  2. Jak příkaz Sed ‚1!g;h;$!d‘ obrátí obsah souboru?

  3. Odstranění konkrétních řádků ze souboru v příkazovém řádku Linuxu