La commande sed ou stream editor est un programme que vous pouvez utiliser pour modifier des fichiers texte en fonction de divers paramètres. La commande sed peut également être utilisée pour des actions globales de recherche et de remplacement. Certaines des options de commande courantes et leurs utilisations sont indiquées dans le tableau suivant.
Option | Description |
---|---|
-d | Supprimez les lignes qui correspondent à un modèle ou à un numéro de ligne spécifique. |
-n,p | N'imprime que les lignes contenant le motif. |
s | Remplacez la première occurrence de la chaîne dans le fichier. |
S,g | Remplacez globalement la chaîne d'origine par la chaîne de remplacement pour chaque occurrence dans le fichier. |
Syntaxe
La syntaxe générale de la commande sed est :
# sed {'option/address/ action'} {file names}
Les adresses indiquent à sed d'agir uniquement sur certaines lignes ou d'agir uniquement sur le texte qui correspond à un modèle d'expression régulière donné. Ils sont facultatifs. Les adresses sont suivies de l'action à effectuer lorsqu'une correspondance est trouvée. Le dernier argument est le nom du fichier d'entrée. Les paramètres d'option, d'adresse et d'action sont généralement placés entre guillemets simples.
Exemples de commandes sed
1. Remplacez la première occurrence d'une expression régulière dans chaque ligne d'un fichier et imprimez le résultat :
# sed 's/regular_expression/replace/' filename
2. Remplacez toutes les occurrences d'une expression régulière étendue dans un fichier et imprimez le résultat :
# sed -r 's/regular_expression/replace/g' filename
3. Remplacez toutes les occurrences d'une chaîne dans un fichier, en écrasant le fichier (c'est-à-dire sur place) :
# sed -i 's/find/replace/g' filename
4. Remplacer uniquement sur les lignes correspondant au motif de ligne :
# sed '/line_pattern/s/find/replace/' filename
5. Supprimez les lignes correspondant au motif de ligne :
# sed '/line_pattern/d' filename
6. Imprimez les 11 premières lignes d'un fichier :
# sed 11q filename
7. Appliquez plusieurs expressions de recherche-remplacement à un fichier :
# sed -e 's/find/replace/' -e 's/find/replace/' filename
8. Remplacez le séparateur `/` par tout autre caractère non utilisé dans les modèles de recherche ou de remplacement, par ex. `#` :
# sed 's#find#replace#' filename