logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
utilisateurs:hypathie:tutos:sed-par-la-methode-structuraliste [30/07/2014 08:11]
Hypathie [La commande s]
utilisateurs:hypathie:tutos:sed-par-la-methode-structuraliste [13/11/2014 09:31] (Version actuelle)
Hypathie [sed par la méthode structuraliste]
Ligne 11: Ligne 11:
 Michel Foucault Michel Foucault
  
 +
 +===Références===
 +
 +  * Illustration de man sed : [[http://​www.scotchlinux.tuxfamily.org/​doc/​sed.php]]
 +  * Exemples d'​utilisation : [[http://​www.system-linux.eu/​index.php?​post/​2008/​12/​21/​La-commande-Sed]]
 =====Introduction ===== =====Introduction =====
  
Ligne 60: Ligne 65:
 -J'​appelle "​options sensibles"​ celles dont l'​utilisation dépend des commandes internes de sed, et dont l'​usage réclame une connaissance de la "​grammaire"​ de sed. -J'​appelle "​options sensibles"​ celles dont l'​utilisation dépend des commandes internes de sed, et dont l'​usage réclame une connaissance de la "​grammaire"​ de sed.
  
--J'​appelle __"​grammaire"​ du programme sed__ les règles qui gèrent la syntaxe ​global ​d'une ligne de commandes sed relativement aux commandes internes de sed.+-J'​appelle __"​grammaire"​ du programme sed__ les règles qui gèrent la syntaxe ​globale ​d'une ligne de commandes sed relativement aux commandes internes de sed.
    
 En effet, la syntaxe de l'​adressage et le choix des options dépendent du choix des commandes internes.\\ ​ En effet, la syntaxe de l'​adressage et le choix des options dépendent du choix des commandes internes.\\ ​
Ligne 152: Ligne 157:
  
 <note tip> <note tip>
-Cette option permettant l'​utilisation de script sed, elle va donc influer sur la possibilité d'​utiliser conjointement d'​autres options de sed.\\ Les commandes internes de sed doivent être inscrites dans le script, ce qui influe sur la syntaxe d'​appel des commandes internes. L'​utilisation du tampon n'​étant plus le même avec l'​utilisation d'un script sed, l'​effet de l'​option ''​-n''​ va changer.\\+Cette option permettant l'​utilisation de script sed, va donc influer sur la possibilité d'​utiliser conjointement d'​autres options de sed.\\ Les commandes internes de sed doivent être inscrites dans le script, ce qui influe sur la syntaxe d'​appel des commandes internes. L'​utilisation du tampon n'​étant plus la même avec l'​utilisation d'un script sed, l'​effet de l'​option ''​-n''​ va changer.\\
    
 //Elle implique aussi la possibilité d'​utiliser les commandes de sed mises au point principalement pour l'​usage de scripts sed.\\ (Voir la troisième partie "​scripts sed avancés"​)//​ //Elle implique aussi la possibilité d'​utiliser les commandes de sed mises au point principalement pour l'​usage de scripts sed.\\ (Voir la troisième partie "​scripts sed avancés"​)//​
Ligne 246: Ligne 251:
 bizarre ce Nono bizarre ce Nono
 </​code>​ </​code>​
-La ligne de commandes de "​script2-sed",​ matche la ligne "il veut pour adresse mail 127.0.0.1@lo",​ du fait de l'​option ''​-n'',​ ni la ligne qui correspond à la //E.R//, ni les autres lignes du fichier ne sont placées dans le tampon de travail de sed ; puis sed applique la commande d'​ajout de "​script2-sed"​ ; et inscrit enfin ce résultat dans le fichier "​sed-options"​.\\ ​par conséquent il ne reste plus dans le fichier que l'​ajout "​bizarre ce Nono".+La ligne de commandes de "​script2-sed",​ matche la ligne "il veut pour adresse mail 127.0.0.1@lo",​ du fait de l'​option ''​-n'',​ ni la ligne qui correspond à la //E.R//, ni les autres lignes du fichier ne sont placées dans le tampon de travail de sed ; puis sed applique la commande d'​ajout de "​script2-sed"​ ; et inscrit enfin ce résultat dans le fichier "​sed-options"​.\\ ​Par conséquent il ne reste plus dans le fichier que l'​ajout "​bizarre ce Nono".
 </​note>​ </​note>​
  
Ligne 357: Ligne 362:
  
 >Pour ajouter une ligne vide en deuxième ligne avec la commande (a), il faut ajouter au moins un caractère, ici, "​espace"​. >Pour ajouter une ligne vide en deuxième ligne avec la commande (a), il faut ajouter au moins un caractère, ici, "​espace"​.
->Pour désigner une ligne précises ​aux commandes qui suivent __une commande d'​ajout__ de ligne, il peut être plus simple d'​utiliser l'​adressage par d'encadrement (par exemple ici, ''​ /​^mon/,​$s/​^/​ / '',​ ou ''​ 2,$s/^/ / ''​).+>Pour désigner une ligne précise ​aux commandes qui suivent __une commande d'​ajout__ de ligne, il peut être plus simple d'​utiliser l'​adressage par encadrement (par exemple ici, ''​ /​^mon/,​$s/​^/​ / '',​ ou ''​ 2,$s/^/ / ''​).
  
 ===Utiliser conjointement i et a === ===Utiliser conjointement i et a ===
Ligne 372: Ligne 377:
 </​code>​ </​code>​
  
-On aurait pu utiliser ​utiliser la ligne de commande qui suit, pour obtenir le même résultat.+On aurait pu utiliser la ligne de commande qui suit, pour obtenir le même résultat.
 <code user> <code user>
 sed -e '​1i\Ton sentiment comme atmosphère'​\ sed -e '​1i\Ton sentiment comme atmosphère'​\
Ligne 410: Ligne 415:
 <note important>​ <note important>​
 Attention !\\ Attention !\\
-  + 
-Si on utilise __plusieurs commandes d'​ajout__,​ la charge de la mémoire tampon est si importantes+Si on utilise __plusieurs commandes d'​ajout__,​ la charge de la mémoire tampon est si importante
 que sed se réfère à la numérotation des lignes du __fichier d'​origine__ ​ pour l'​adressage par numéro de ligne __de toutes les commandes__!\\ ​ que sed se réfère à la numérotation des lignes du __fichier d'​origine__ ​ pour l'​adressage par numéro de ligne __de toutes les commandes__!\\ ​
  
Ligne 591: Ligne 596:
 </​code>​ </​code>​
  
->Le caractère # commande ​la ligne.+>Le caractère # commente ​la ligne.
  
 ===Lancer le script avec l'​option -i === ===Lancer le script avec l'​option -i ===
Ligne 936: Ligne 941:
  Match every step' th line starting with line first.  Match every step' th line starting with line first.
 </​code>​ </​code>​
-Remplaçons "​first"​ et step" par "​n"​ et "​m"​ qui sont toujours des nombres ! 
  
 +<note tip>
 +Remplaçons "​first"​ et step" par "​n"​ et "​m"​ qui sont toujours des nombres !\\
 L'​expression ''​n ~ m''​ ou ''​n~m''​ signifie simplement :\\ L'​expression ''​n ~ m''​ ou ''​n~m''​ signifie simplement :\\
  
-La E.R sélectionne toutes les ''​n''​ième ligne(s) d'un fichier ​et cela en sautant un nombre de ligne(s) égal à un écart (~). Cet écart est égal à la différence __entre le nombre ''​m''​ avec la première ligne du fichier__ (c'​est-à-dire la position ordinal 1). On connaît donc le nombre de ligne(s) sautée(s) en faisant toujours ''​m - 1''​."+La E.R sélectionne toutes les ''​n''​ième ligne(s) d'un fichier en sautant un nombre de ligne(s) égal à un écart (~).\\   
 +Cet écart est égal à la différence __entre le nombre ''​m''​ avec la première ligne du fichier__ (c'​est-à-dire la position ordinal 1).\\   
 +On connaît donc le nombre de ligne(s) sautée(s) en faisant toujours ''​m - 1''​. ​
  
-Et si ''​n''​ est égal à zéro, ''​n''​ devient la position ordinale 1 du fichier ​en plus l'​adressage de début. Donc la E.R. match toutes les ''​m''​ièmes lignes à partir de la ligne ''​n'',​ et saute ''​m'' ​- 1 ligne(s).+Et si ''​n''​ est égal à zéro, ''​n''​ devient la position ordinale 1 du fichier, ainsi que l'​adressage de début. Donc la //E.R.// sélectionne ​toutes les ''​m''​ièmes lignes à partir de la ligne ''​n'',​ et saute m - 1 ligne(s).
  
-  * ''​1 ~ 2''​ : sélection des lignes impaires : 1ière, 3ième, 5ième, etc.\\ En effet, de la première ligne du fichier jusqu'​à ''​m'',​ il y a 1 (''​m'' ​= 2 et 2 - 1 =1). Il sera sauté 1 ligne non-sélectionnée et cela à partir de la ligne n°1 (''​n'' ​= 1 = la position ordinale). Donc la sélection ​concerne ​la première ligne, saut d'une ligne, sélection de la 3ième ligne, saut 1 ligne, etc. +  * ''​1 ~ 2''​ : sélection des lignes impaires : 1ière, 3ième, 5ième, etc.\\ En effet, de la première ligne du fichier jusqu'​à ''​m'',​ il y a 1 (m = 2 et 2 - 1 =1).\\ Il sera sauté 1 ligne (non-sélectionnéeet cela à partir de la ligne n°1 (n = 1 = la position ordinale).\\ Donc sélection ​de la première ligne, saut d'une ligne, sélection de la 3ième ligne, saut 1 ligne, etc. 
-  * ''​2~3''​ : sélection les lignes 2 ; 5 ; 8 ; 11\\ L'​écart sauté sera de 2 car l'​écart entre la position 3 (''​m'' ​= 3) et la première ligne du fichier, est de 2 lignes (3 - 1 = 2), et cela commence à la deuxième ligne (''​n'' ​= 2). Donc la deuxième ligne est sélectionnée,​ deux lignes sont sautées (3ième et 4 ième), la 5 ième est sélectionnée,​ etc+ 
-  * 10 ~ 5 : sélection des lignes 10 ; 15 ; 20 ; 25 etc. (5 - 1 = 4 : Il sera sauté 4 lignes non-sélectionnées,​ à partir de la ligne 10)+  * ''​2 ~ 3''​ : sélection les lignes 2 ; 5 ; 8 ; 11\\ L'​écart sauté sera de 2 car l'​écart entre la position 3 (m = 3) et la première ligne du fichier, est de 2 lignes (3 - 1 = 2), et cela commence à la deuxième ligne (n = 2).\\ Donc la deuxième ligne est sélectionnée,​ deux lignes sont sautées (3ième et 4 ième), la 5 ième est sélectionnée,​ etc. 
-  + 
-  * 0~5 : sélection des lignes 5 ; 10 ; 15 etc.\\ ​(L'​écart est égal à m - 1 = 5-1 = 4 ; donc 4 lignes sautées, à partir de la cinquième ligne (''​m'' ​= 5 ).+  * ''​0 ~ 5'' ​: sélection des lignes 5 ; 10 ; 15 etc.\\ L'​écart est égal à m - 1 = 5 - 1 = 4 ; donc 4 lignes sautées, à partir de la cinquième ligne (m = 5 ). 
 + 
 +</​note>​
  
   * Exemple 1:   * Exemple 1:
Ligne 1038: Ligne 1048:
  
 ==== # : Commentaire (Aucune adresse autorisée)==== ==== # : Commentaire (Aucune adresse autorisée)====
-Le caractère ​''​#''​ (dièse) commence un commentaire et ce jusqu'​à la fin de la ligne.\\  +Le caractère ​dièse ( # ) commence un commentaire et ce jusqu'​à la fin de la ligne.\\  
-Dans un script sed, il peut se trouver sur la même ligne qu'une commande, elle ne sera prise pour un commantaire.\\ +Dans un script sed, il peut se trouver sur la même ligne qu'une commande, elle ne sera pas prise pour un commentaire.\\ 
 Si les deux premiers caractères d'un script sed sont "#​n",​ l'​option "​-n"​ (no-autoprint) est alors forcée. Si les deux premiers caractères d'un script sed sont "#​n",​ l'​option "​-n"​ (no-autoprint) est alors forcée.
  
Ligne 1062: Ligne 1072:
  
 > Dans ce cas, sed affiche de la ligne 4 à la ligne 5.  > Dans ce cas, sed affiche de la ligne 4 à la ligne 5. 
-> Puis la commande d supprime tout sauf les lignes ​de p et la ligne traitée par d.+> Puis la commande d supprime tout sauf les lignes ​traitées par p et d.
  
 ===Utilisation de la commande ''​q''​=== ===Utilisation de la commande ''​q''​===
Ligne 1082: Ligne 1092:
  
 > Dans ce cas, la commande q adresse les 6 premières lignes dans la mémoire principale de sed, qui peut alors les utiliser une fois, donc pour une seule commande après q. > Dans ce cas, la commande q adresse les 6 premières lignes dans la mémoire principale de sed, qui peut alors les utiliser une fois, donc pour une seule commande après q.
-> En effet, si l'​adressage de la commande suivante "​déborde"​ de celui de la commande q, alors sed affiche la ligne que la commande q a adressé ​à la mémoire principale.+> En effet, si l'​adressage de la commande suivante "​déborde"​ de celui de la commande q, alors sed affiche la ligne que la commande q a adressée ​à la mémoire principale.
  
 <​code>​ <​code>​
Ligne 1159: Ligne 1169:
  
 Il ne doit y avoir qu'un seul espace entre la commande et le nom du "​fichier lu"​.\\ ​ Il ne doit y avoir qu'un seul espace entre la commande et le nom du "​fichier lu"​.\\ ​
-Il faut donner le chemin absolu du "​fichier lu" +Il faut donner le chemin absolu du "​fichier lu" si le terminal ne se trouve ​pas dans le répertoire parent de ce "​fichier lu".
- si le terminal ne se trouve dans le répertoire parent de ce "​fichier lu".+
 ===Préparation=== ===Préparation===
   * soit le fichier "​sed-fich-lu.txt"​ :   * soit le fichier "​sed-fich-lu.txt"​ :
Ligne 1213: Ligne 1222:
 </​code>​ </​code>​
  
-=====Les ​commande fonctionnant en rapport avec d'​autres ​commandes =====+=====Les commandes ​multi-lignes  ​===== 
 +On les utilise avec d'​autres commandes.
  
 ^Commandes ​ ^Significations ​  ^ ^Commandes ​ ^Significations ​  ^
utilisateurs/hypathie/tutos/sed-par-la-methode-structuraliste.1406700682.txt.gz · Dernière modification: 30/07/2014 08:11 par Hypathie

Pied de page des forums

Propulsé par FluxBB