Re: variable dans expression reguliere

Top Page

Reply to this message
Author: Bruno Cudini
Date:  
To: Patrick Dupre
CC: guilde Guilde
Subject: Re: variable dans expression reguliere
Salut la liste,

On Sat, Jun 16, 2012 at 04:35:06PM +0200, Patrick Dupre wrote:
> Bonjour,
>
> j'ai une expression (dans un fichier):
> /home/user/filename
>
> Je fais:
>
> sed -ne 's/.*"$HOME"//p' fichier
>
> pour recuperer le "filename" sans la hierachie complete.
> mais cela ne marche pas
> alors que j'ai bien
>
> $HOME=/home/user
>
> Qu'est que je n'ai pas compris ?


L'utilisation de quotes simples (') fait que rien ne sera interprété
dans la chaîne. Il faudrait les remplacer par des doubles ("), et il
n'est pas nécessaire de mettre $HOME entre quotes. Par contre, il peut
être utile de délimiter le nom de la variable en écrivant ${HOME}, ce
qui évite de chercher la variable $HOME.ssh par exemple (si $HOME
contenait un / à la fin).

Un autre problème est que d'utiliser des / dans ton expression sed va
poser problème avec les noms de fichiers. Tu peux utiliser d'autres
caractères à la place, perso j'utilise un # dès que j'ai à traiter des
noms de fichiers :

    sed -ne "s#.*${HOME}##p" fichier