linux:shell:traitement_texte
Table des matières
Linux
Manipulation sur les chaînes de caractères
Longueur d'une chaîne de caractère
$ CHAINE="hello world!" $ LONGUEUR=${#CHAINE} $ echo $LONGUEUR 12
Afficher un fichier sans les lignes de commentaires
Avec Grep :
$ egrep -v '^(#|$)' <FICHIER> $ grep -E -v '^(#|$)' <FICHIER>
Avec Sed :
$ sed -e '/^[ ]*#/d' -e '/^[ ]*;/d' -e '/^$/d' <FICHIER>
Rechercher et afficher les fichiers contenant un motif donné
$ find . -type f -exec grep -il 'chaine' {} ;
Afficher les fichiers contenant 'MOTIF1' mais qui ne contiennent pas 'MOTIF2'
for FIC in `find . -name 'txt' -type f -exec grep -il 'motif_voulu' {} \;` do grep -L 'motif_non_voulu' $FIC done
Afficher les lignes (+ num) d'un fichier contenant une expression particulière
Lecture ligne par ligne d'un fichier
NBL=0 while read LIGNE do NBL=$(( $NBL + 1 )) echo $LIGNE | grep 'boe120_audit' > /dev/null if [ $? -eq 0 ] then echo "$NBL > $LIGNE" fi done < 20120524_PROD_backup_mysqlbo.sql
Suppression de certaines lignes d'un fichier
Suppression de la 3ème ligne :
sed '3d' mon_fichier.txt
Suppression de la ligne contenant la chaîne “awk” :
sed '/awk/d' mon_fichier.txt
Suppression de la dernière ligne :
sed '$d' mon_fichier.txt
Suppression de toutes les lignes vides :
sed '/^$/d' mon_fichier.txt sed '/./!d' mon_fichier.txt
Suppression de la ligne “matchée” par une expression régulière : (ici on élimine celle contenant des caractères numérique (au moins 1 chiffre) situés en fin de ligne)
sed '/[0-9/][0-9]*$/d' mon_fichier.txt
Suppression de l'intervalle compris entre les lignes 7 et 9 :
sed '7,9d' mon_fichier.txt
La même chose mais en remplaçant les numéros de ligne par des “motifs”
sed '/-Début/,/-Fin/d' mon_fichier.txt
linux/shell/traitement_texte.txt · Dernière modification : 2022/12/07 08:30 de zandor