Outils pour utilisateurs

Outils du site


linux:sed (lu 52768 fois)

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
linux:sed [01-11-2013 21:46]
edmc73
linux:sed [04-10-2020 12:00] (Version actuelle)
edmc73 [Remplacement / substitution]
Ligne 17: Ligne 17:
 tata 4321 toto tutu tata 4321 toto tutu
 </file> </file>
 +
 +L'option ''-i'' permet d'écrire directement les modifications dans le fichier. Sans l'option, le résultat s'affiche à l'écran
  
 Pour remplacer  **toto** par **koko** on utilise le **s** pour substitution Pour remplacer  **toto** par **koko** on utilise le **s** pour substitution
-  sed -'s/toto/koko/' fichier.txt+  sed -'s/toto/koko/' fichier.txt
    
 <file> <file>
Ligne 26: Ligne 28:
 </file> </file>
  
-On peut remarquer que seul la 1ère occurence est remplacé, pour remplacer toutes les occurences, on utilise l'option **g** à la fin de la commande +On peut remarquer que seule la 1ère occurrence est remplacée, pour remplacer toutes les occurrences, on utilise l'option **g** à la fin de la commande 
-  sed -'s/toto/koko/g' fichier.txt+  sed -'s/toto/koko/g' fichier.txt
 <file> <file>
 koko 1234 koko titi koko 1234 koko titi
Ligne 33: Ligne 35:
 </file> </file>
  
 +Pour ignorer la casse, on utilise l'option **I**
 +  sed -i 's/toto/koko/gI' fichier.txt
 +
 +Remplacer un \ par / dans les path des #include dans un fichier .c
 +  sed -i '/#include/s@\\@/@g' fichier.c
 +  sed -i '/#include/s@\\@/@g' *.c
 +  sed -i '/#include/s@\\@/@g' **/*.c
 +  
 +Pour remplacer dans l'ensemble d'un projet dans des fichiers .c et .h
 +
 +  find . -name '*.[ch]' -exec sed -i '/#include/s@\\@/@g' {} \;
 +et inversement
 +  find . -name '*.[ch]' -exec sed -i '/#include/s@/@\\@g' {} \;
 ==== Translittération ==== ==== Translittération ====
 Pratique pour par exemple remplacer tous les e avec accent par un e sans accent. Pratique pour par exemple remplacer tous les e avec accent par un e sans accent.
Ligne 59: Ligne 74:
 Avec les **[ ]** et spécifie que la ligne commente par un **#** ou un **;**. Le **;** suivant veut dire que nous lançons une autre commande, celle ci dit que nous cherchons une ligne vide. **^** indique le début de la ligne et **$** la fin. **/d** on delete. Avec les **[ ]** et spécifie que la ligne commente par un **#** ou un **;**. Le **;** suivant veut dire que nous lançons une autre commande, celle ci dit que nous cherchons une ligne vide. **^** indique le début de la ligne et **$** la fin. **/d** on delete.
  
 +Supprimer les lignes qui contient un message d'erreur
 +  sed -e '/HTTP accept: Too many open files/d' pound.log.1 > pound.log.clean.1
  
 Éliminer les espaces et tabulations Éliminer les espaces et tabulations
Ligne 111: Ligne 128:
 Sed Sed
 <code>sed -r 's/.*href=".*[$/](.*)".*/\1/' fichierSource</code> <code>sed -r 's/.*href=".*[$/](.*)".*/\1/' fichierSource</code>
 +
 +==== Extraire la date et la reformaté dans un nom de fichier ====
 +
 +  
 +  $ echo Pict_20140215_0945.jpg | sed -r 's/.*([0-9]{4})([0-9]{2})([0-9]{2})_([0-9]{2})([0-9]{2}).*/\3-\2-\1 \4:\5/'
 +  15-02-2014 09:45
 +
 +==== Extraire la valeur d'un test avec hdparm ====
 +On veut récupérer la valeur 64.66
 +<code># hdparm -t /dev/sda
 +
 +/dev/sda:
 + Timing buffered disk reads: 198 MB in  3.06 seconds =  64.66 MB/sec</code>
 +
 +  hdparm -t /dev/sda | sed -r '/Timing/!d;s/.*=\s*(.*) MB.*/\1/'
 +  
 +Avec le ''/Timing/!d'' on garde que la ligne qui contient le mot Timing.\\
 +''.*'' n'importe quoi jusqu'au ''='' suivi ou non de plusieurs espace\\
 +On prend la valeur jusqu'à rencontrer un espace suivi de ''MB'' et n'importe quoi.
 +
 +
 +==== Connaitre les machines connectées à notre serveur NFS ====
 +
 +<code>netstat -alp | egrep 'nfs(.*)ESTABLISHED' | sed -r 's/.* ([a-z0-9-]*\.[a-z0-9-]*\.[a-z0-9-]*).*/\1/'</code>
 +
 +
  
 ===== Regexp extended ===== ===== Regexp extended =====
Ligne 122: Ligne 165:
 >Examples: >Examples:
 > >
->abc? +>abc? -> ‘abc\?’ when using extended regular expressions. It matches the literal string ‘abc?’.  
->becomes ‘abc\?’ when using extended regular expressions. It matches the literal string ‘abc?’.  +>c\+ - ‘c+’ when using extended regular expressions. It matches one or more ‘c’s.  
->c\+ +>a\{3,\} -> ‘a{3,}’ when using extended regular expressions. It matches three or more ‘a’s.  
->becomes ‘c+’ when using extended regular expressions. It matches one or more ‘c’s.  +>\(abc\)\{2,3\} -> ‘(abc){2,3}’ when using extended regular expressions. It matches either ‘abcabc’ or ‘abcabcabc’.  
->a\{3,\} +>\(abc*\)\1 -> ‘(abc*)\1’ when using extended regular expressions. Backreferences must still be escaped when using extended regular expressions.
->becomes ‘a{3,}’ when using extended regular expressions. It matches three or more ‘a’s.  +
->\(abc\)\{2,3\} +
->becomes ‘(abc){2,3}’ when using extended regular expressions. It matches either ‘abcabc’ or ‘abcabcabc’.  +
->\(abc*\)\1 +
->becomes ‘(abc*)\1’ when using extended regular expressions. Backreferences must still be escaped when using extended regular expressions.+
  
  
linux/sed.1383338789.txt.gz · Dernière modification: 01-11-2013 21:46 de edmc73