GNU/Linux >> Znalost Linux >  >> Linux

Jak použít sed k odstranění posledních n řádků souboru

Vtipné a jednoduché sed a tac řešení:

n=4
tac file.txt | sed "1,$n{d}" | tac

POZNÁMKA

  • dvojité uvozovky " jsou potřeba, aby shell vyhodnotil $n proměnná v sed příkaz. V jednoduchých uvozovkách nebude provedena žádná interpolace.
  • tac je cat obráceně, viz man 1 tac
  • {} v sed jsou zde k oddělení $n &d (pokud ne, shell se pokusí interpolovat neexistující $nd proměnná)

Ze sed jednovrstvých:

# delete the last 10 lines of a file
sed -e :a -e '$d;N;2,10ba' -e 'P;D'   # method 1
sed -n -e :a -e '1,10!{P;N;D;};N;ba'  # method 2

Zdá se, že je to to, co hledáte.


Nevím o sed , ale lze to provést pomocí head :

head -n -2 myfile.txt

Pokud je možnost pevného kódování n, můžete použít sekvenční volání sed. Chcete-li například odstranit poslední tři řádky, odstraňte poslední řádek třikrát:

sed '$d' file | sed '$d' | sed '$d'

Linux
  1. Jak použít sed k odstranění pouze dvojitých prázdných řádků?

  2. Jak použít sed k nahrazení proměnné konfiguračního souboru?

  3. Efektivně odstraňte poslední dva řádky extrémně velkého textového souboru

  1. Jak používat příkaz sed pro Linux

  2. Jak používat příkaz Tar v Linuxu

  3. Jak odstranit Bom ze souboru UTF-8?

  1. Jak odstranit prvních N řádků souboru Ascii pomocí příkazů Shell?

  2. Jak používat Správce souborů LCN

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