sed : question sur la commande 'N' - Codes et scripts - Linux et OS Alternatifs
MarshPosté 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
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 :
sed '5r file1' file2
Tandis que la commande suivante insère le contenu de file2 juste avant la 5ème ligne de file1:
Code :
sed -e '5r file1' -e N file2
Et je pige pas pourquoi
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 :
sed '/string/r file1' file2
Tandis que celle-là insère le contenu de file2 juste avant les lignes contenant 'string':
Code :
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 Sinon je suis content ça marche mais j'aimerais bien comprendre pourquoi ça marche
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
J'ai du mal à comprendre ce que fait la commande N en sed. D'après le manuel:
`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:
Tandis que la commande suivante insère le contenu de file2 juste avant la 5ème ligne de file1:
Et je pige pas pourquoi
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':
Tandis que celle-là insère le contenu de file2 juste avant les lignes contenant 'string':
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 Sinon je suis content ça marche mais j'aimerais bien comprendre pourquoi ça marche