sed : question sur la commande 'N'

sed : question sur la commande 'N' - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 24-01-2015 à 19:33:49    

Salut, j'ai pas trouvé de topic approprié pour ma p'tite question donc j'en crée un :o  
 
J'ai du mal à comprendre ce que fait la commande N en sed. D'après le manuel:
 

Citation :

`N'
     Add a newline to the pattern space, then append the next line of
     input to the pattern space.  If there is no more input then `sed'
     exits without processing any more commands.


Le "pattern space" si j'ai bien compris c'est la ligne en cours de traitement par sed, sur laquelle sont appliquées les commandes qu'on a indiquées à sed, sachant que par défaut sed traite une ligne après l'autre.
 
Par exemple, la commande suivante insère le contenu de file2 juste après la 5ème ligne de file1:

Code :
  1. sed '5r file1' file2


Tandis que la commande suivante insère le contenu de file2 juste avant la 5ème ligne de file1:

Code :
  1. sed -e '5r file1' -e N file2


Et je pige pas pourquoi [:petrus75]  
 
Tel que je comprends l'extrait du manuel, quand sed traite la 5ème ligne la commande 'N' fait qu'il ajoute la 6ème ligne au pattern space, et du coup je comprends pas pourquoi il insère le contenu de file2 au-dessus de la 5ème ligne de file1.
 
Autre exemple similaire, la commande suivante insère le contenu de file2 après les lignes contenant le mot 'string':

Code :
  1. sed '/string/r file1' file2


Tandis que celle-là insère le contenu de file2 juste avant les lignes contenant 'string':

Code :
  1. sed -e '/string/r file1' -e //N file2


C'est le même topo, sauf que là en plus je comprends pas pourquoi il faut mettre //N et pas /N ou N. (//N file2 apparaît en vert mais c'est pas un commentaire ça fait bien partie de la commande)
 
Si vous pouvez m'aider à dénouer tout ça :jap: Sinon je suis content ça marche mais j'aimerais bien comprendre pourquoi ça marche :o  
 
 
 
 
 

Reply

Marsh Posté le 24-01-2015 à 19:33:49   

Reply

Sujets relatifs:

Leave a Replay

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