Remplacement d 1 ligne ds un fichier
Résolu
abiss
-
abiss -
abiss -
Bonjour,
J'essaye d'écrire une fonction dans un script shell (ksh) qui remplace une partie d'une ligne par une autre. La ligne a remplacer commence par la chaine libdir= mais j'ai qques difficultés.
ma fonction prend en paramètre la nouvelle ligne et le fichier concerné.
replaceLine()
{
#cmd1
sed "s/\(^libdir=\)\(..*$\)/\1$1/" $2
#cmd2
sed 's/\(^libdir=\)\(..*$\)/\1$1/' $2
}
avec l'exécution de la cmd1 j'ai l'erreur suivante:
sed: -e expression #1, char 29: unknown option to `s'
Exit 1
avec l'exécution de la cmd2 le $1 n'est pas remplacé par son contenu mais utilisé comme tel:
Un autre point est que j'ai besoin du résultat dans le fichier passé en paramètre et non sur le stdin
Merci de votre aide
J'essaye d'écrire une fonction dans un script shell (ksh) qui remplace une partie d'une ligne par une autre. La ligne a remplacer commence par la chaine libdir= mais j'ai qques difficultés.
ma fonction prend en paramètre la nouvelle ligne et le fichier concerné.
replaceLine()
{
#cmd1
sed "s/\(^libdir=\)\(..*$\)/\1$1/" $2
#cmd2
sed 's/\(^libdir=\)\(..*$\)/\1$1/' $2
}
avec l'exécution de la cmd1 j'ai l'erreur suivante:
sed: -e expression #1, char 29: unknown option to `s'
Exit 1
avec l'exécution de la cmd2 le $1 n'est pas remplacé par son contenu mais utilisé comme tel:
Un autre point est que j'ai besoin du résultat dans le fichier passé en paramètre et non sur le stdin
Merci de votre aide
A voir également:
- Remplacement d 1 ligne ds un fichier
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Remplacement coco - Accueil - Réseaux sociaux
- Comment ouvrir un fichier epub ? - Guide
- Coco.fr remplacement - Accueil - Réseaux sociaux
2 réponses
hello
le problème c'est les $ entre simples ou doubles quotes, essayer:
le problème c'est les $ entre simples ou doubles quotes, essayer:
sed "s/\(^libdir=\)\(..*\$\)/\1$1/" $2 sed 's/\(^libdir=\)\(..*$\)/\1'"$1"'/' $2
Salut,
Que contient ton paramètre "$1" ?
Sinon, la sous-expression "\(..*$\)" est inutile vu qu'apparemment elle cible tout le reste de la ligne, non ?
Essaye avec :
Que contient ton paramètre "$1" ?
Sinon, la sous-expression "\(..*$\)" est inutile vu qu'apparemment elle cible tout le reste de la ligne, non ?
Essaye avec :
sed 's/^libdir=/&'"$1"'/' $2
Bonjour,
je fais l'appel à la fonction avec les parametres suivants:
replaceLine \'/usr/local/BerkeleyDB.4.5/lib\' /tmp/test.txt
Exp:
j ai par example la ligne suivante:
...
libdir='/usr/lib'
...
Je veux remplacer ce qui le path /usr/lib par /usr/local/BerkeleyDB.4.5/lib
libdir='/usr/local/BerkeleyDB.4.5/lib'
Sinon la commande que vous m'avez fournit génère l'erreur suivante:
sed: -e expression #1, char 16: unknown option to `s'
Exit 1
Cdl
je fais l'appel à la fonction avec les parametres suivants:
replaceLine \'/usr/local/BerkeleyDB.4.5/lib\' /tmp/test.txt
Exp:
j ai par example la ligne suivante:
...
libdir='/usr/lib'
...
Je veux remplacer ce qui le path /usr/lib par /usr/local/BerkeleyDB.4.5/lib
libdir='/usr/local/BerkeleyDB.4.5/lib'
Sinon la commande que vous m'avez fournit génère l'erreur suivante:
sed: -e expression #1, char 16: unknown option to `s'
Exit 1
Cdl
j ai la même erreur avec les deux propositions:
sed: -e expression #1, char 27: unknown option to `s'
Exit 1