Bash - sed Remplacer / par \/
Résolu/Fermé
Acedia
Messages postés
6
Date d'inscription
mercredi 12 mars 2008
Statut
Membre
Dernière intervention
13 mars 2008
-
12 mars 2008 à 16:18
Acedia Messages postés 6 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 13 mars 2008 - 13 mars 2008 à 17:46
Acedia Messages postés 6 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 13 mars 2008 - 13 mars 2008 à 17:46
A voir également:
- Sed -e bash
- É - Guide
- E/s en série intel - Forum Carte graphique
- List bash ✓ - Forum Shell
- E exposant clavier ✓ - Forum Windows
- É majuscule ✓ - Forum Windows
4 réponses
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
12 mars 2008 à 17:54
12 mars 2008 à 17:54
sed "/numero_ligne/c\mon_expression" fichier.txtet si c'est un numéro de ligne, pas besoin de l'encadrer par des délimiteurs :
sed "numero_ligne c\mon_expression" fichier.txt;-))
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
13 mars 2008 à 16:26
13 mars 2008 à 16:26
Le plus simple restait quand même les doubles quotes :
Note: nécessite que ce soit la première ligne avec un espace au début, ou que ce soit la seule.
Non non, ce sera appliqué à toutes les lignes commençant par un espace.
sed "$linenum c\ $sline" ~/fstabsed -i 's/^ //' ~/fstab #on supprime le premier espace de la ligne.
Note: nécessite que ce soit la première ligne avec un espace au début, ou que ce soit la seule.
Non non, ce sera appliqué à toutes les lignes commençant par un espace.
Acedia
Messages postés
6
Date d'inscription
mercredi 12 mars 2008
Statut
Membre
Dernière intervention
13 mars 2008
13 mars 2008 à 17:27
13 mars 2008 à 17:27
Ben non, avec ton expression il inscrit un espace aussi.
En plus je ne suis pas sûr que le shell apprécie que l'on ne quote pas les variables dans l'expression sed. Je n'ai pas testé sans, mais je crois que c'est une convention non?
sed -i 's/^ //' ~/fstab #on supprime le premier espace de la ligne.
Note: nécessite que ce soit la première ligne avec un espace au début, ou que ce soit la seule.
Non non, ce sera appliqué à toutes les lignes commençant par un espace.
Tu as raison, autant pour moi.
En plus je ne suis pas sûr que le shell apprécie que l'on ne quote pas les variables dans l'expression sed. Je n'ai pas testé sans, mais je crois que c'est une convention non?
sed -i 's/^ //' ~/fstab #on supprime le premier espace de la ligne.
Note: nécessite que ce soit la première ligne avec un espace au début, ou que ce soit la seule.
Non non, ce sera appliqué à toutes les lignes commençant par un espace.
Tu as raison, autant pour moi.
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
13 mars 2008 à 17:30
13 mars 2008 à 17:30
sed "$num c\ $var"Essaie comme ça alors ;-))
Acedia
Messages postés
6
Date d'inscription
mercredi 12 mars 2008
Statut
Membre
Dernière intervention
13 mars 2008
13 mars 2008 à 17:46
13 mars 2008 à 17:46
Ah ça je n'y avais pas pensé, pas bête, mais ne t'inquiète pas, j'ai terminé mon script, il fonctionne très bien avec la suppression de l'espace , en plus c'est parfait parce qu'il ne faut pas qu'il y ait d'espace dans ce fichier en début de ligne.
Merci pour tes réponses en tout cas ;)
Merci pour tes réponses en tout cas ;)
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
12 mars 2008 à 16:44
12 mars 2008 à 16:44
Salut,
Voir dans la FAQ Sed - Introduction à SED - Part II - Les délimiteurs
Sed - Introduction à SED - Part II - Le remplacement de variables
;-))
Voir dans la FAQ Sed - Introduction à SED - Part II - Les délimiteurs
Sed - Introduction à SED - Part II - Le remplacement de variables
;-))
Acedia
Messages postés
6
Date d'inscription
mercredi 12 mars 2008
Statut
Membre
Dernière intervention
13 mars 2008
12 mars 2008 à 17:50
12 mars 2008 à 17:50
Oui merci j'ai résolu ce problème, mais j'en ai un autre maintenant.
Je veux substituer une ligne entière par une expression.
J'ai utilisé cette syntaxe:
sed "/numero_ligne/c mon_expression" fichier.txt
Il me retourne: \ attendu après `a' `c' ou `i'
J'ai essayé des tas de choses, sans succès, je n'arrive vraiment pas à m'en dépatouiller...
Si vous avez des suggestions..
Je veux substituer une ligne entière par une expression.
J'ai utilisé cette syntaxe:
sed "/numero_ligne/c mon_expression" fichier.txt
Il me retourne: \ attendu après `a' `c' ou `i'
J'ai essayé des tas de choses, sans succès, je n'arrive vraiment pas à m'en dépatouiller...
Si vous avez des suggestions..
12 mars 2008 à 19:58
Du coup, le " saute:
sed ""$linenum" c\"$sline" ~/fstab
En mettant un espace, ce n'est pas mieux... simple quote ne change rien non plus...
De plus, lorsque je met:
sed ""$linenum" c\ "$sline" ~/fstab
il m'affiche à l'écran le contenu de $sline, avec un espace devant, mais ne l'écris pas dans le fichier. C'est bizarre, il n'y a aucune concaténation avec cat ou autre...
12 mars 2008 à 21:04
Je vous met la solution, si ça peut aider quelqu'un:
sed -i ''$linenum' c\ '$line'' ~/fstab #on laisse un espace après \ pour qu'il ne nous échappe pas '
sed -i 's/^ //' ~/fstab #on supprime le premier espace de la ligne.
Note: nécessite que ce soit la première ligne avec un espace au début, ou que ce soit la seule.