GNU/Linux >> Tutoriels Linux >  >> Linux

Supprimer les lignes d'en-tête supplémentaires du fichier, à l'exception de la première ligne ?

J'ai un fichier qui ressemble à cet exemple de jouet. Mon fichier actuel contient 4 millions de lignes, dont environ 10 que je dois supprimer.

ID  Data1  Data2
1    100    100
2    100    200
3    200    100
ID  Data1  Data2
4    100    100
ID  Data1  Data2
5    200    200

Je souhaite supprimer les lignes qui ressemblent à l'en-tête, à l'exception de la première ligne.

Fichier final :

ID  Data1  Data2
1    100    100
2    100    200
3    200    100
4    100    100
5    200    200

Comment puis-je faire cela ?

Réponse acceptée :

header=$(head -n 1 input)
(printf "%sn" "$header";
 grep -vFxe "$header" input
) > output
  1. saisir la ligne d'en-tête du fichier d'entrée dans une variable
  2. imprimer l'en-tête
  3. traiter le fichier avec grep pour omettre les lignes qui correspondent à l'en-tête
  4. capturez le résultat des deux étapes ci-dessus dans le fichier de sortie

Linux
  1. Comment insérer du texte avant la première ligne d'un fichier ?

  2. Supprimer tous les fichiers/répertoires sauf un fichier ?

  3. Supprimer efficacement les premières lignes d'un fichier texte ?

  4. Conserver uniquement la première ligne de chaque séquence de lignes consécutives correspondant à un motif ?

  5. Imprimer un fichier, en sautant les X premières lignes, dans Bash

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

Imprimer la dernière ligne d'un fichier, à partir de la CLI

Comment supprimer les lignes qui apparaissent sur le fichier B d'un autre fichier A ?

Supprimer les lignes paires ou impaires d'un fichier texte

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

Script bash pour supprimer le fichier le plus ancien d'un dossier