GNU/Linux >> Znalost Linux >  >> Linux

Vytiskněte soubor s vynecháním prvních X řádků v Bash

Budete potřebovat ocas. Několik příkladů:

$ tail great-big-file.log
< Last 10 lines of great-big-file.log >

Pokud opravdu potřebujete PŘESKOČIT určitý počet „prvních“ řádků, použijte

$ tail -n +<N+1> <filename>
< filename, excluding first N lines. >

To znamená, že pokud chcete přeskočit N řádků, začnete tisknout řádek N+1. Příklad:

$ tail -n +11 /tmp/myfile
< /tmp/myfile, starting at line 11, or skipping the first 10 lines. >

Pokud chcete vidět pouze posledních tolik řádků, vynechejte "+":

$ tail -n <N> <filename>
< last N lines of file. >

Nejjednodušší způsob, jak odstranit prvních deset řádků souboru:

$ sed 1,10d file.txt

V obecném případě kde X je počet počátečních řádků ke smazání, zásluhy za to komentátorům a editorům:

$ sed 1,Xd file.txt

Pokud chcete přeskočit první dva řádky:

tail -n +3 <filename>

Pokud chcete přeskočit první x řádek:

tail -n +$((x+1)) <filename>

Pokud máte na svém systému k dispozici GNU tail, můžete provést následující:

tail -n +1000001 huge-file.log

Je to + postava, která dělá, co chcete. Abych citoval z manuálové stránky:

Pokud je první znak K (počet bajtů nebo řádků) `+', tiskne se počínaje K-tou položkou od začátku každého souboru.

Jak je tedy uvedeno v komentáři, zadáním +1000001 se začne tisknout s první položkou po prvních 1 000 000 řádcích.


Linux
  1. Jak procházet řádky souboru?

  2. Proč skript Bash nerozpozná aliasy?

  3. The Bash ‘?

  1. Zřetězit čáry na základě prvního znaku dalšího řádku?

  2. Čte Tail celý soubor?

  3. Odebrat další řádky záhlaví ze souboru, kromě prvního řádku?

  1. Vytisknout obsah souboru bez prvního a posledního řádku?

  2. Ukončení ocasu -f po tisku N řádků?

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