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
Prochaine révision Les deux révisions suivantes
utilisateurs:hypathie:tutos:sed-et-les-expressions-rationnelles [23/07/2014 07:09]
Hypathie [Sed et les regexp simples]
utilisateurs:hypathie:tutos:sed-et-les-expressions-rationnelles [27/07/2014 08:41]
Hypathie [L'adressage]
Ligne 33: Ligne 33:
   - expression régulière :\\ ''​*''​ -> zéro ou plusieurs fois l'​élément précédent (b*BABA -> BABA, bBABA, bbBABA, bbbBABA, etc.)   - expression régulière :\\ ''​*''​ -> zéro ou plusieurs fois l'​élément précédent (b*BABA -> BABA, bBABA, bbBABA, bbbBABA, etc.)
   - expression régulière :\\ ''​.*''​ -> zéro ou plusieurs occurrence(s) de n'​importe quel caractère   - expression régulière :\\ ''​.*''​ -> zéro ou plusieurs occurrence(s) de n'​importe quel caractère
- 
--> **Il s'y ajoute pour sed __le caractère__ ''&''​ :**\\  
-- **''&''​** : Représente la chaîne à remplacer((ce qu'on ajoute autour de ''&''​ est ajouté à la chaîne remplacée)). 
  
 -> __**utilisation des classes**__ : -> __**utilisation des classes**__ :
Ligne 108: Ligne 105:
 >Pour REGEXP, on peut utiliser la syntaxe habituelle, ou la syntaxe étendue avec l'​option ''​-r''​. >Pour REGEXP, on peut utiliser la syntaxe habituelle, ou la syntaxe étendue avec l'​option ''​-r''​.
  
-=====L'​adressage ​=====+=====Les adressages de la commande s =====
 ===Préparation=== ===Préparation===
 <code user> <code user>
Ligne 194: Ligne 191:
 /​coucou/​titi /​coucou/​titi
 </​code>​ </​code>​
 +
 +===Adressage du retour chariot ===
 +Par exemple, pour matcher une chaîne constituée de deux chaînes égales séparées par un retour à la ligne, du fichier essai :
 +<​code>​
 +abcd
 +abcd
 +coucou coucou
 +</​code>​
 +<code user>
 +  sed -r '​N;​s/​^(.*)\n\1$/​X/​g'​ essai
 +</​code>​
 +<​code>​
 +X
 +coucou coucou
 +</​code>​
 +
 ===Adressage avec délimiteurs "/ /" :=== ===Adressage avec délimiteurs "/ /" :===
 soit le fichier sed2.txt soit le fichier sed2.txt
Ligne 220: Ligne 233:
 </​code>​ </​code>​
  
-===Adressage ​d'une plage avec délimiteurs ​"/ /,/ /" ​:===+===Adressage ​mixte : "ns/regexp/chaine" === 
 +''​n''​ est un nombre entier. 
 +On remplace chaineA par chaineB à la ligne ''​n''​.\\ 
 + 
 +Soit le fichier "​sed1.txt":​
 <code user> <code user>
-sed '/^B/,/^1/d' ​~/sed1.txt+cat sed1.txt 
 +aaaa 
 +BBB 
 +cCcC 
 +
 +12345 
 +BBB 
 +titi cCcC 
 +</​code>​ 
 + 
 +<code user> 
 +sed -n '6s/BBB/GAGA/p' sed1.txt
 </​code>​ </​code>​
 <​code>​ <​code>​
-aaaa+GAGA
 </​code>​ </​code>​
  
-===Adressage mixte=== +=== Adressage mixte pour une plage, "​n,​ms/​regxp/​chaine/​=== 
-''​n''​ et ''​m''​ sont des nombres entiers ​naturels+''​n''​ et ''​m''​ sont des nombres entiers.\\ 
 +On remplace chaineA par chaineB de la ligne n à la ligne m.\\ 
 +Soit le même fichier "​sed1.txt"​ que précédemment.
  
-  ​sed 'n,ms/chaine 1/chaine 2/' fichier +  sed 'n,ms/chaineA/chaineB/' fichier
- +
->On remplace chaine 1 par chaine 2 de la ligne n à la ligne m. +
- +
-  * sed '/​chaine 1/s/chaine 2/chaine 3/' fichier +
- +
->On remplace chaine 2 par chaine 3 pour la ou les ligne(s) adressées par chaine 1.+
  
 <code user> <code user>
Ligne 251: Ligne 275:
  
 <code user> <code user>
-sed '​2,​6s/​BBB/​GAGA/'​ sed1.txt +sed -r -n '​2,​6s/​B{3}/​GAGA/​p' sed1.txt
-</​code>​ +
-ou +
-<code user> +
-sed -r '​2,​6s/​B{3}/​GAGA/'​ sed1.txt+
 </​code>​ </​code>​
 <​code>​ <​code>​
-aaaa+GAGA titi
 GAGA GAGA
-cCcC 
-# 
-12345 
-GAGA 
-titi cCcC 
 </​code>​ </​code>​
 +
 +===Adressage de ligne(s) avec délimiteur "/​regexp/"​ devant s===
 +On remplace chaineB par chaineC pour la ou les ligne(s) adressées par chaineA
 +
 +  sed '/​chaineA/​s/​chaineB/​chaineC/'​ fichier
  
 <code user> <code user>
Ligne 283: Ligne 303:
 titi cCcC titi cCcC
 </​code>​ </​code>​
 +===Adressage d'une plage avec délimiteurs "/ /,/ /" :=== 
 +<code user> 
 +sed '/​^B/,/​^1/​d'​ ~/​sed1.txt 
 +</​code>​ 
 +<​code>​ 
 +aaaa 
 +</​code>​
 === Adressage avec le tilde=== === Adressage avec le tilde===
 <code text man sed> <code text man sed>
Ligne 388: Ligne 414:
 </​code>​ </​code>​
  
 +===Le caractère & ===
 + ​**''&''​** : Représente la chaîne à remplacer.\\ ​
 +Si le signe ''&''​ est présent dans le motif de remplacement,​ alors, il sera substitué par le motif de recherche en entier.
 +<code text sed1.txt>​
 +aaaa
 +BBB titi
 +cCcC
 +#
 +12345
 +BBB
 +titi cCcC
 +titi BBB
 +/​coucou/​titi
 +</​code>​
 +
 +  * Entourer de crochet la chaîne "​12345"​
 +
 +<code user>
 +sed '​s/​[0-9][0-9]*$/​[&​]/'​ sed1.txt
 +</​code>​
 +<​code>​
 +aaaa
 +BBB
 +cCcC
 +#
 +[12345]
 +BBB
 +titi cCcC
 +</​code>​
 +
 +  * Faire ensorte que le fichier "​sed1.txt"​ ne comporte deux lignes "titi grominet"​
 +<code user>
 +sed -re '​s/​titi/&​ grosminet/'​ -e\
 + '/​titi/​!d'​ -e\
 + '​s/​(BBB|cCcC)//'​ -e\
 + '/​^ /d' -e\
 + '/​^\/​.*/​d'​ -i\
 + ​sed1.txt
 +</​code>​
 +
 +<code user>
 +cat sed1.txt
 +</​code>​
 +<​code>​
 +titi grosminet ​
 +titi grosminet
 +</​code>​
 +
 +===le caractère de désignation de champ \n ===
 +''​n''​ est le numéro de champ d'une partie du motif de recherche, chaque partie du motif de recherche étant délimitée ainsi ''​\(sous-motif\)''​.
 +  * Exemple inverser la deuxième ligne de "​sed1.txt"​
 +<code user>
 +
 +</​code>​
 +sed -e '​2s/​\(titi\) \(grosminet\)/​\2 \1/g' sed1.txt
 +<​code>​
 +titi grosminet ​
 +grosminet titi
 +</​code>​
 =====Sed et les regexp simples ===== =====Sed et les regexp simples =====
 ====Explications==== ====Explications====
Ligne 476: Ligne 561:
 <​code>​ <​code>​
 Coucou Coucou
-</​code>​ 
- 
-===Le caractère & === 
- 
-<code user> 
-sed '​s/​[0-9][0-9]*$/​[&​]/'​ sed1.txt 
-</​code>​ 
-<​code>​ 
-aaaa 
-BBB 
-cCcC 
-# 
-[12345] 
-BBB 
-titi cCcC 
-</​code>​ 
-<code user> 
-sed '​s/​[0-9][0-9]*$/​(&​)/'​ sed1.txt 
-</​code>​ 
-<​code>​ 
-aaaa 
-BBB 
-cCcC 
-# 
-(12345) 
-BBB 
-titi cCcC 
 </​code>​ </​code>​
  
utilisateurs/hypathie/tutos/sed-et-les-expressions-rationnelles.txt · Dernière modification: 09/08/2014 07:30 par Hypathie

Pied de page des forums

Propulsé par FluxBB