Le but de cet exemple est de :
# »,
# ».
Nous devons donc procéder en deux étapes :
# ». En effet, si notre commande supprime
tout d'abord tout ce qui suit le caractère « # », y compris
celui-ci, nous obtiendrons une ligne blanche à supprimer, qu'il ne sera pas
possible de distinguer d'une ligne déjà blanche qui, elle, ne devra pas être
supprimée.
# ». Il ne restera donc plus qu'à substituer tout ce qui suit le
caractère « # » par rien, caractère « # » compris.
Ce traitement s'effectuera sur toutes les lignes. L'opération de substitution ne
s'exécutera donc seulement si il existe une occurence du caractère « # »
sur la ligne.
Deux méthodes sont possibles :
| »,
Dans un but pédagogique, nous montrerons la seconde méthode. En effet, elle mettra en évidence comment combiner les requêtes entre-elles et aussi la façon de les ordonner.
Examinons la requête à écrire pour exécuter la première étape. Tout d'abord, la commande « sed » associée à la suppression est « d ». À cette commande, la spécification des adresses de début et de fin doit correspondre à toute ligne commençant par « # ». Nous allons donc utiliser une expression régulière et les deux adresses seront identiques. L'expression régulière adéquate correspond à :
# »,
| Description | Expression | ||||
| début de ligne | ^ |
||||
caractère « # » |
# |
||||
| quelque chose éventuellement | .* |
La requête correspondant à la première étape est donc :
/^#.*/d
Examinons maintenant la requête à écrire pour exécuter la seconde étape. Comme il a été dit précédemment, cette requête devra s'appliquer sur toutes les lignes obtenues par la première. Sachant que les requêtes s'exécutent séquentiellement, lors de l'appel à la seconde, les enregistrements qui lui sont fournis sont ceux qui résultent de la première exécution. Par conséquent, les adresses de début et de fin ne sont pas à spécifier car ce sont toutes les lignes qu'il faut traiter.
La commande de substitution de « sed » est « s ». Sa syntaxe est :
# »,
| Description | Expression | ||||
caractère « # » |
# |
||||
| quelque chose éventuellement | .* |
||||
| fin de ligne | $ |
La requête correspondant à la seconde étape est donc :
s/#.*$//
# » jusqu'à la fin de la ligne. Cette entité est substituée par « rien ».
Nous obtenons donc :
sed -e '/^#.*/d' -e 's/#.*$//' fichier