Sed Tout Puissant
Sed (abréviation de Stream EDitor, « éditeur de flux ») est, comme awk, un programme informatique permettant d'appliquer différentes transformations prédéfinies à un flux séquentiel de données textuelles.
Source Wikipedia
Après Vi , voici Sed tout puissant : un autre utilitaire qui peut faire des "trucs sympas" en ligne de commande.
Tout d'abord, un petit rappel sur l'utilisation de la commande :
#sed -e : permet le passage de commande sur une seule ligne
#sed -f : permet le passage de commande avec un fichier en entrée
#sed -i : modification directement sur le fichier
Voici une suite d'exemples qui montre succinctement la puissance de l'utilitaire "sed" :
#affiche les lignes qui commencent par dièse (avec un embryon de regexp : caractère "^" qui # se positionne sur le début de la ligne) sed -n '/^#/p' fichier.txt #dans le même genre (mais en plus violent...) suppression de commentaire dans un fichier # (avec "^#" pour la selection/positionnement de la ligne et "d" pour la supprimer) sed '/^#/d' fichier.txt #la transliteration (là, ça le fait peut-être un peu trop...) ligne de commande qui permet # de supprimer tous les accents indésirables dans un fichier... sed -i fichier.txt -e 'y/éèê/eee/ #dans tous les fichiers du répertoire courant, remplace tous les "e" en "b" (ouah, # super utile ça...) mais en faisant une sauvegarde du fichier en .bak # ( et ça, c'est plutot pas mal !) for f in in $(ls);do sed -i.bak -e 's/e/b/' $f done #renomme tous les fichiers .JPG (pas bien !) en *.jpg (bien !) for f in in $(ls *.JPG);do fn=$(echo $f|sed 's/JPG/jpg/') mv $f $fn done # ajoute le contenu du fichier truc.list aprés la ligne '#####TEST#####' # dans le fichier monFic.txt sed -i "/^#####TEST#####$/r /tmp/truc.list" monFic.txt #un petit dernier pour la route : suppression de tous les caractères # spéciaux d'un fichier "pourri" de type "fenètre"... cat ficPourri.log|sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g">ficOK.log #
Sed, les sous-expressions :
source : https://www.commentcamarche.net/faq/9559-sed-introduction-a-sed-part-ii
Une sous-expression est une partie d'une expression régulière, encadrée par des parenthèses, que l'on souhaite réutiliser dans la chaîne de remplacement. Les parenthèses doivent être elles-mêmes protégées par des backslashes, à moins que l'option "-r" ait été employée.
# dernieres lignes du fichier d'exemple cat exemple.csv 710;02:37:40;JOURNET Nathalie;V2F;F;Saint Cassien$ 711;02:37:42;JOURNET Philippe;V2H;H;Saint Cassien$ 712;02:38:00;CASTAGNET Philippe;V2H;H;Sanary sur Mer$ 713;02:38:44;MOUSSET Cathy;SEF;F;Maddingley$ # extraction de certains champs avec sed -r ( afin d'eviter de protégér les sous-chaines) # - premier champ : numerique uniquement de 1 à 3 caracteres finissant par un ; # - deuxieme champ : 8 caractères et un ; # - troisieme champ : lettre en majuscule uniquement (de 1 à 20) cat exemple.csv |sed -r 's:([0-9]{1,3};)(........)(;[A-Z]{1,20} )(.*$):\1 --- \2 --- \3:' 710; --- 02:37:40 --- ;JOURNET 711; --- 02:37:42 --- ;JOURNET 712; --- 02:38:00 --- ;CASTAGNET 713; --- 02:38:44 --- ;MOUSSET
C'est tout pour le moment !
Sed offre tout plein de possibilité : a vous de les découvrir :)
ici : https://fr.wikipedia.org/wiki/Stream_Editor
ou là : http://www.siteduzero.com/informatique/tutoriels/la-commande-sed
et encore https://www.commentcamarche.net/faq/9559-sed-introduction-a-sed-part-ii