OVH Cloud OVH Cloud

unix

6 réponses
Avatar
fr
Bonjour,

j'ai un fichier sous la forme de : ./donnees/.X.conf
- comment supprimer le premier carractere cad '.' avant /donnees/.X.conf
resultat souhaité : /donnees/.X.conf
et un autre fichier sous la forme de : ./donnees/./conf/.X.conf
comment supprimer le premier carractere cad '.' avant /donnees/.X.conf
et avant /conf/.X.conf
resultat souhaité : /donnees/conf/.X.conf

merci d'avance

6 réponses

Avatar
Fred
Bonjour,

j'ai un fichier sous la forme de : ./donnees/.X.conf
- comment supprimer le premier carractere cad '.' avant /donnees/.X.conf
resultat souhaité : /donnees/.X.conf
et un autre fichier sous la forme de : ./donnees/./conf/.X.conf
comment supprimer le premier carractere cad '.' avant /donnees/.X.conf
et avant /conf/.X.conf
resultat souhaité : /donnees/conf/.X.conf

merci d'avance


filename=./donnees/./conf/.X.conf
echo $filename | sed -e 's/^.//' -e 's_/./_/_g'

NB : dans la 2ème expression c'est le _ qui est utilisé comme séparateur
pour éviter les /

A+
Fred

Avatar
Pascal Bourguignon
fr writes:

Bonjour,

j'ai un fichier sous la forme de : ./donnees/.X.conf
- comment supprimer le premier carractere cad '.' avant /donnees/.X.conf
resultat souhaité : /donnees/.X.conf
et un autre fichier sous la forme de : ./donnees/./conf/.X.conf
comment supprimer le premier carractere cad '.' avant /donnees/.X.conf
et avant /conf/.X.conf
resultat souhaité : /donnees/conf/.X.conf


On peut le faire brutalement, avec sed:

nouveau="$(echo "$nom" | sed -e 's-^./-/' -e 's-/./-/-g')"



On peut aussi le faire avec bash:

nouveau="${nom///.///}" ; nouveau="${nouveau#.}"

ce qui est plus économe.



Parfois, on peut vouloir ruser avec le file system:

cd "$(dirname "$nom")"
nouvdir="$(pwd)"
nouvnom="$nouvdir/$(basename "$nom")"

Mais ça ne marche que si le chemin existe et est accessible...


--
__Pascal Bourguignon__ http://www.informatimago.com/
Litter box not here.
You must have moved it again.
I'll poop in the sink.

Avatar
gregg
Pascal Bourguignon wrote:

On peut le faire brutalement, avec sed:

nouveau="$(echo "$nom" | sed -e 's-^./-/' -e 's-/./-/-g')"


C'est une deuxième proposition avec sed.
J'avais tout d'abord pensé à:

nom="./machin/truc"
nom=$( echo "$nom" | cut -c 2- )

Personne ne propose "cat" ? Pourquoi ?

++

Avatar
Pascal Bourguignon
gregg writes:

Pascal Bourguignon wrote:

On peut le faire brutalement, avec sed:
nouveau="$(echo "$nom" | sed -e 's-^./-/' -e 's-/./-/-g')"


C'est une deuxième proposition avec sed.
J'avais tout d'abord pensé à:

nom="./machin/truc"
nom=$( echo "$nom" | cut -c 2- )

Personne ne propose "cat" ? Pourquoi ?


Où est le fichier?


--
__Pascal Bourguignon__ http://www.informatimago.com/

In a World without Walls and Fences,
who needs Windows and Gates?


Avatar
gregg
Pascal Bourguignon wrote:

Personne ne propose "cat" ? Pourquoi ?



Où est le fichier?




je voulais dire "cut", et pas "cat" ! :-(
désolé, mon clavier a fourché...


Avatar
Pascal Bourguignon
gregg writes:

Pascal Bourguignon wrote:

Personne ne propose "cat" ? Pourquoi ?
Où est le fichier?




je voulais dire "cut", et pas "cat" ! :-(
désolé, mon clavier a fourché...


Ah bon. Comme on avait fait récement le bête avec des cat|more|less...

--
__Pascal Bourguignon__ http://www.informatimago.com/

Nobody can fix the economy. Nobody can be trusted with their finger
on the button. Nobody's perfect. VOTE FOR NOBODY.