[shell] lire un fichier mais pas la première ni dernière ligne

lire un fichier mais pas la première ni dernière ligne [shell] - Shell/Batch - Programmation

Marsh Posté le 16-04-2008 à 10:47:21    

bonjour,
comme c'est dit dans le sujet, j'ai un fichier (trés trés long) que je dois parcourir pour traiter les lignes,
seulement je ne dois pas traiter ni la première ni la dernière ligne
j'avais pensé faire un tail avec en paramètre le nombre de lignes moins une, mais du coup j'ai toujours la dernière ligne.
 
je voudrai aussi que cette commande soit la plus optimisée possible, du coup est ce qu'il vaut mieux s'embêter à compter le nombre de ligne et parcourir le fichier sauf la première et la dernière, ou alors parcourir tout le fichier avec un simple cat, et faire un test à chaque fois (car la premiere et derniere ligne ont leur 4 premiers caractères remarquable)
 
merci de votre aide


Message édité par dams78 le 16-04-2008 à 10:47:42

---------------
dam's (debianer), ma galerie Flickr
Reply

Marsh Posté le 16-04-2008 à 10:47:21   

Reply

Marsh Posté le 16-04-2008 à 16:10:58    

g trouvé ca par contre il te colle le numéro de la ligne au début du résultat :sweat:

 
Citation :

awk 'END {print NR}' nom_fichier

pour trouver le nombre de lignes

Citation :

awk 'NR==2, NR==nb_ligne -1 {print NR $0}' nom_fichier

pour afficher le contenu des lignes que tu parcours (de la deuxième à l'avant dernière)


Message édité par mic_12 le 16-04-2008 à 16:11:18
Reply

Marsh Posté le 16-04-2008 à 19:25:59    

Une solution avec sed :

sed '1d;$d' fichier


 
Jean-Pierre.

Reply

Marsh Posté le 17-04-2008 à 08:33:51    

impecable ça marche,
je suspose que d est le numéro de la ligne?
donc la dis tu dis à sed de ne pas lire la 1ere ligne 1d, ni la dernière $d ?
 
merci


---------------
dam's (debianer), ma galerie Flickr
Reply

Marsh Posté le 17-04-2008 à 15:20:22    

dams78 a écrit :

impecable ça marche,
je suspose que d est le numéro de la ligne?
donc la dis tu dis à sed de ne pas lire la 1ere ligne 1d, ni la dernière $d ?
 
merci

Cela indique à sed de supprimer (d) la première (1) et la derniére ($) ligne.
 
Jean-Pierre.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed