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