SED : L'outil de transformation de texte
Table des matières
sed c'est un éditeur de flux pour le filtrage et la transformation de texte.
Bon OK, ça ne parle pas trop dit comme ça...
Un éditeur de flux est utilisé pour effectuer des transformations de texte basiques sur un flux d'entrée (un fichier ou l'entrée d'un pipe). sed fonctionne en seulement une passe sur l'entrée(s) et est, par conséquent, plus efficace. Mais c'est sa capacité à filtrer du texte dans un tube qui le distingue des autres éditeurs.
Substituer des mots :
Substituer tous les mots d'un fichier (ici, tous les salut en bonjour) -i pour le fichier et le /g pour global (toutes les occurrences) :
Récupérer le chemin en cours et remplacer les espaces par un "antislash + espace"
Ajouter le mot "Requires: " au début de chaque ligne du fichier codec, et garder le résultat dans le fichier codec2
Ou en remplaçant le fichier actuel :
Remplacer dans tous les fichiers du répertoire courant azerty par qwerty :
Concaténer toutes les lignes d'un fichier :
Ecrire au début d'un fichier
Supprimer toutes les lignes commençant par USE :
Supprimer la première ligne d'un fichier :
Qu'est ce que sed ?
sed c'est un éditeur de flux pour le filtrage et la transformation de texte.
Bon OK, ça ne parle pas trop dit comme ça...
Un éditeur de flux est utilisé pour effectuer des transformations de texte basiques sur un flux d'entrée (un fichier ou l'entrée d'un pipe). sed fonctionne en seulement une passe sur l'entrée(s) et est, par conséquent, plus efficace. Mais c'est sa capacité à filtrer du texte dans un tube qui le distingue des autres éditeurs.
Utiliser sed avec des exemples
Substituer des mots :
Copier vers le presse-papierCode BASH :
echo Bonjour Adrien | sed -e "s/Adrien/à toi/"
Substituer tous les mots d'un fichier (ici, tous les salut en bonjour) -i pour le fichier et le /g pour global (toutes les occurrences) :
Copier vers le presse-papierCode BASH :
sed -e "s/salut/bonjour/g" -i fichier.txt
Récupérer le chemin en cours et remplacer les espaces par un "antislash + espace"
Copier vers le presse-papierCode BASH :
chem=$(pwd | sed -e "s/ /\\\ /g")
Ajouter le mot "Requires: " au début de chaque ligne du fichier codec, et garder le résultat dans le fichier codec2
Copier vers le presse-papierCode BASH :
sed -e 's/^/Requires: /g' codec > codec2
Ou en remplaçant le fichier actuel :
Copier vers le presse-papierCode BASH :
sed -i -e 's/^/Requires: /g' codec
Remplacer dans tous les fichiers du répertoire courant azerty par qwerty :
Copier vers le presse-papierCode BASH :
find . -name "*" -exec sed -i 's/azerty/qwerty/g' {} \;
Concaténer toutes les lignes d'un fichier :
Copier vers le presse-papierCode BASH :
sed -e 'N;s/\n/ /' fichier
Ecrire au début d'un fichier
Copier vers le presse-papierCode BASH :
sed -i '1s/^/en haut\n/' fichier
Supprimer toutes les lignes commençant par USE :
Copier vers le presse-papierCode BASH :
sed -i '/^USE/d' fichier
Supprimer la première ligne d'un fichier :
Copier vers le presse-papierCode BASH :
sed -i -e "1d" fichier