GNU/Linux >> Tutoriels Linux >  >> Linux

Comment utiliser sed pour supprimer les n dernières lignes d'un fichier

Un sed drôle et simple et tac solution :

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

REMARQUE

  • guillemets doubles " sont nécessaires pour que le shell évalue le $n variable en sed commande. Entre guillemets simples, aucune interpolation ne sera effectuée.
  • tac est un cat inversé, voir man 1 tac
  • le {} en sed sont là pour séparer $n &d (sinon, le shell essaie d'interpoler $nd inexistant variables)

Extrait des répliques de sed :

# 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

Semble être ce que vous recherchez.


Je ne sais pas pour sed , mais cela peut être fait avec head :

head -n -2 myfile.txt

Si le codage en dur n est une option, vous pouvez utiliser des appels séquentiels à sed. Par exemple, pour supprimer les trois dernières lignes, supprimez trois fois la dernière ligne :

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

Linux
  1. Comment utiliser la commande Linux sed

  2. Comment utiliser la commande Tar sous Linux

  3. Comment utiliser les lignes d'un fichier comme arguments d'une commande ?

  4. Comment utiliser sed pour supprimer uniquement les doubles lignes vides ?

  5. Supprimez efficacement les deux dernières lignes d'un fichier texte extrêmement volumineux

Comment utiliser la commande touch sous Linux

Comment utiliser la commande Linux head

Comment utiliser la commande Linux diff

Comment supprimer des lignes d'un fichier à l'aide de la commande Sed

Comment utiliser le gestionnaire de fichiers

Comment utiliser la commande Gzip sous Linux ?