User Tools

Site Tools


informatique:linux:commandes_linux

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revisionBoth sides next revision
informatique:linux:commandes_linux [2020/01/02 16:08] – [stat] pteuinformatique:linux:commandes_linux [2020/01/03 10:54] – [sed] pteu
Line 2100: Line 2100:
 =====sed===== =====sed=====
  
-**S**tream **ED**itor est une commande qui permet d'appliquer différentes transformations prédéfinies à un flux séquentiel de données textuelles. +**S**tream **ED**itor est une commande qui permet d'appliquer différentes transformations prédéfinies à un flux séquentiel de données textuelles. Sed peut travailler sur un flux (pipé derrière une autre commande) ou à partir d'un fichier :
- +
-  * Filtre pour remplacer une IP par X.X.X.X+
 <code bash> <code bash>
-sed "s/\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}/X.X.X.X/g" +# afficher le contenu du fichier en remplaçant toto par titi 
-</code>+cat fichier.txt | sed 's/toto/titi'
  
-  * Convertir les minuscules en majuscules (ou inversement) +# même chose en plus simple 
-<code bash> +sed 's/toto/titifichier.txt
-echo "La PhraSe avec Des LeTTres n'iMpoRte comMEnt"sed 's/.*/\L&/' +
-la phrase avec des lettres n'importe comment +
-# et respectivement 's/.*/\U&/' pour convertir le texte en majuscules+
 </code> </code>
-(Le "&" représente le motif qui matche) 
  
-  * Ajouter une ligne en début de fichier :+Par défaut le résultat est affiché dans le terminal ; si on précise un fichier on peut choisir d'enregistrer les modifications dans celui-ci, en ajoutant l'option ''-i'' :
 <code bash> <code bash>
-sed -i '1iPremièreLigne' toto.txt+# remplacer toto par titi dans le fichier (sans afficher le résultat) 
 +sed -i 's/toto/titifichier.txt 
 +# idem, mais en sauvegardant le fichier original avec l'extension .bck 
 +# cela créra 2 fichiers : fichier.txt (modifié) et fichier.txt.bck (l'original) 
 +sed -i".bck" 's/toto/titi' fichier.txt
 </code> </code>
-(il s'agit d'un "un" i suivi du texte à insérer) 
  
-  * Afficher la 3ème ligne d'un fichier (et sauvegarder le fichier source avec le suffixe ".bck") :+  * Afficher la 3ème ligne d'un fichier (plusieurs méthodes
 +Afficher la 3ème ligne d'un fichier :
 <code bash> <code bash>
-sed -i".bck" -n '3p' <fichier>+sed -n '3p' <fichier> 
 +sed '3!d'   <fichier> 
 +sed '52q;d' <fichier>   # arrête la lecture dès qu'elle a matché, pour la performance
 </code> </code>
  
Line 2135: Line 2135:
 sed -n '2,5p' <fichier> sed -n '2,5p' <fichier>
 sed -n '2,/sys/p' <fichier> sed -n '2,/sys/p' <fichier>
 +</code>
 +
 +  * Ajouter une ligne en début de fichier :
 +<code bash>
 +sed -i '1iPremièreLigne' toto.txt
 +</code>
 +(il s'agit d'un "un" i suivi du texte à insérer)
 +
 +  * Afficher les lignes sauf celles situées entre "toto" et "titi" :
 +<code bash>
 +sed '/toto/,/titi/d'
 </code> </code>
  
Line 2150: Line 2161:
 sed -e '0,/^begin/d' -e '/^end/,$d' fichier.txt sed -e '0,/^begin/d' -e '/^end/,$d' fichier.txt
 </code> </code>
 +
 +  * Remplacer les adresses IP par X.X.X.X
 +<code bash>
 +sed "s/\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}/X.X.X.X/g"
 +</code>
 +
 +  * Convertir les minuscules en majuscules (ou inversement)
 +<code bash>
 +echo "La PhraSe avec Des LeTTres n'iMpoRte comMEnt" | sed 's/.*/\L&/'
 +la phrase avec des lettres n'importe comment
 +# et respectivement 's/.*/\U&/' pour convertir le texte en majuscules
 +</code>
 +(Le "&" représente le motif qui matche)
  
   * On peut réutiliser des patterns entre () qui ont matchées avec \1, \2. Par exemple, pour inverser les 3 termes séparés par des virgules :   * On peut réutiliser des patterns entre () qui ont matchées avec \1, \2. Par exemple, pour inverser les 3 termes séparés par des virgules :
informatique/linux/commandes_linux.txt · Last modified: 2024/04/05 06:58 by pteu