GNU/Linux >> Tutoriels Linux >  >> Linux

Supprimer les lignes paires ou impaires d'un fichier texte

Cela pourrait fonctionner pour vous (à la fois GNU et non-GNU sed) :

 sed -n 'p;n' file # keep odd
 sed -n 'n;p' file # keep even

-n :supprimer l'impression

p :imprime la ligne courante

n :ligne suivante


Utilisation de GNU sed :

sed -i '0~2d' filename

pour supprimer les lignes paires du fichier.

Pour supprimer les lignes impaires :

sed -i '1~2d' filename

Le -i l'option entraînerait l'enregistrement des modifications dans le fichier sur place.

Citation du manuel :

`FIRST~STEP'
     This GNU extension matches every STEPth line starting with line
     FIRST.  In particular, lines will be selected when there exists a
     non-negative N such that the current line-number equals FIRST + (N
     * STEP).  Thus, to select the odd-numbered lines, one would use
     `1~2'; to pick every third line starting with the second, `2~3'
     would be used; to pick every fifth line starting with the tenth,
     use `10~5'; and `50~0' is just an obscure way of saying `50'.

mauvais

Le % est un opérateur de module et NR est le numéro de la ligne courante, donc NR%2==0 est vrai uniquement pour les lignes paires et invoquera la règle par défaut pour elles ({ print $0 } ). Ainsi pour enregistrer uniquement les lignes paires , redirige la sortie de awk vers un nouveau fichier :

awk 'NR%2==0' infile > outfile

Vous pouvez accomplir la même chose avec sed . devnulls la réponse montre comment le faire avec GNU sed .Vous trouverez ci-dessous des alternatives pour les versions de sed qui n'ont pas le ~ opérateur :

garder les lignes impaires

sed 'n; d' infile > outfile

garder les lignes paires

sed '1d; n; d' infile > outfile

Linux
  1. Comment supprimer les lignes en double dans un fichier texte ?

  2. Comment supprimer les lignes vides d'un fichier (y compris les tabulations et les espaces) ?

  3. Comment supprimer les "données binaires" d'un fichier texte (par exemple, Bash_history) ?

  4. Comment supprimer plusieurs lignes aléatoires d'un fichier texte à l'aide de Sed ?

  5. Suppression de lignes spécifiques d'un fichier dans la ligne de commande Linux

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

Comment supprimer tous les espaces blancs d'un fichier texte

Commande Shell pour supprimer les caractères ^ M du fichier texte

Rechercher et remplacer du texte dans un fichier entre une plage de lignes à l'aide de sed

Supprimer les N premières lignes d'un fichier journal actif

Comment afficher certaines lignes d'un fichier texte sous Linux ?