150 votes

Existe-t-il un moyen d'ignorer les lignes d'en-tête dans un tri UNIX ?

J'ai un fichier à champs de largeur fixe que j'essaie de trier à l'aide de l'utilitaire de tri UNIX (Cygwin, dans mon cas).

Le problème est qu'il y a un en-tête de deux lignes en haut du fichier qui est trié en bas du fichier (car chaque ligne d'en-tête commence par un deux-points).

Existe-t-il un moyen de dire à sort de "laisser passer les deux premières lignes sans les trier" ou de spécifier un ordre qui trie les deux lignes en haut - les lignes restantes commencent toujours par un chiffre à 6 chiffres (qui est en fait la clé sur laquelle je trie) si cela peut aider.

Exemple :

:0:12345
:1:6:2:3:8:4:2
010005TSTDOG_FOOD01
500123TSTMY_RADAR00
222334NOTALINEOUT01
477821USASHUTTLES21
325611LVEANOTHERS00

devrait être triée :

:0:12345
:1:6:2:3:8:4:2
010005TSTDOG_FOOD01
222334NOTALINEOUT01
325611LVEANOTHERS00
477821USASHUTTLES21
500123TSTMY_RADAR00

-1voto

crusaderky Points 109

Avec Python :

import sys
HEADER_ROWS=2

for _ in range(HEADER_ROWS):
    sys.stdout.write(next(sys.stdin))
for row in sorted(sys.stdin):
    sys.stdout.write(row)

-7voto

Sathish G Points 23
cat file_name.txt | sed 1d | sort 

Cela fera ce que vous voulez.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X