Script bash supprimer des lignes d'un fichier de configuration
Résolu/Fermé
xunil2003
Messages postés
766
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
29 septembre 2024
-
Modifié par xunil2003 le 22/03/2015 à 15:05
xunil2003 Messages postés 766 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2024 - 25 mars 2015 à 18:19
xunil2003 Messages postés 766 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2024 - 25 mars 2015 à 18:19
A voir également:
- Script bash supprimer des lignes d'un fichier de configuration
- Ethernet n'a pas de configuration ip valide - Guide
- Impossible de supprimer un fichier - Guide
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
7 réponses
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
22 mars 2015 à 15:06
22 mars 2015 à 15:06
Salut,
Si tu connais exactement le nombre de ligne qui suivent '[tmp]' :
Si tu ne les connais pas et qu'il y a une ligne vide entre chaque section de tes partages :
Si tu connais exactement le nombre de ligne qui suivent '[tmp]' :
sed '/\[tmp\]/,+5d' smb.conf
Si tu ne les connais pas et qu'il y a une ligne vide entre chaque section de tes partages :
sed '/\[tmp\]/,/^$/d' smb.conf
xunil2003
Messages postés
766
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
29 septembre 2024
14
Modifié par xunil2003 le 22/03/2015 à 15:25
Modifié par xunil2003 le 22/03/2015 à 15:25
Bonsoir Zipe31,
Etes-vous sûre et certain.
j'ai fait ceci :
Et il y a toujours la section "tmp" dans le fichier ?
Merci.
Etes-vous sûre et certain.
j'ai fait ceci :
sudo sed '/\[tmp\]/,/^$/d' /etc/samba/smb.conf
Et il y a toujours la section "tmp" dans le fichier ?
Merci.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
22 mars 2015 à 15:30
22 mars 2015 à 15:30
Oui j'en suis sûr, par contre comme toujours avec sed, je ne donne jamais le code modifiant le fichier directement ;-\
Après avoir testé la syntaxe ET constaté de visu (dans le terminal) qu'elle fonctionne bien, il faut rajouter le paramètre "-i" à la commande :
Le .BAK n'est là que pour créer une copie de sauvegarde et n'est pas obligatoire. S'il est omis, penser à faire une copie du fichier à modifier.
Après avoir testé la syntaxe ET constaté de visu (dans le terminal) qu'elle fonctionne bien, il faut rajouter le paramètre "-i" à la commande :
sudo sed -i.BAK '/\[tmp\]/,/^$/d' /etc/samba/smb.conf
Le .BAK n'est là que pour créer une copie de sauvegarde et n'est pas obligatoire. S'il est omis, penser à faire une copie du fichier à modifier.
xunil2003
Messages postés
766
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
29 septembre 2024
14
22 mars 2015 à 16:48
22 mars 2015 à 16:48
Re,
Ok c'est nickel ça marche.
Encore une fois merci Zipe31.
Ok c'est nickel ça marche.
Encore une fois merci Zipe31.
xunil2003
Messages postés
766
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
29 septembre 2024
14
24 mars 2015 à 22:48
24 mars 2015 à 22:48
Bonjour,
J'ai eu un problème avec un fichier dans "/etc/init.d/", j'ai du tout changer pour pouvoir activer ou désactiver le fichier au démarrage du pc.
Dans le fichier /etc/rc.local j'ai ceci
il faut que soit j'ajoute ou supprime la ligne "/etc/init.d/creer-un-dossier-temporaire-dans-tmp.sh" avant la ligne "exit 0".
Mes deux questions :
1/ Comment ajouter ceci "/etc/init.d/creer-un-dossier-temporaire-dans-tmp.sh" avant "exit 0" ?
2/ Comment supprimer ceci "/etc/init.d/creer-un-dossier-temporaire-dans-tmp.sh" avant "exit 0".
Le "exit 0" doit toujours rester à la fin du fichier.
Merci.
J'ai eu un problème avec un fichier dans "/etc/init.d/", j'ai du tout changer pour pouvoir activer ou désactiver le fichier au démarrage du pc.
Dans le fichier /etc/rc.local j'ai ceci
laurent@Laurent-Bureau:~$ cat /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
exit 0
il faut que soit j'ajoute ou supprime la ligne "/etc/init.d/creer-un-dossier-temporaire-dans-tmp.sh" avant la ligne "exit 0".
Mes deux questions :
1/ Comment ajouter ceci "/etc/init.d/creer-un-dossier-temporaire-dans-tmp.sh" avant "exit 0" ?
2/ Comment supprimer ceci "/etc/init.d/creer-un-dossier-temporaire-dans-tmp.sh" avant "exit 0".
Le "exit 0" doit toujours rester à la fin du fichier.
Merci.
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 622
25 mars 2015 à 10:44
25 mars 2015 à 10:44
ajouter le -i pour modifier le fichier
ajouter
supprimer
ajouter
$ sed '$i/etc/init.d/creer-un-dossier-temporaire-dans-tmp.sh' fichier
supprimer
$ sed '/creer-un-dossier-temporaire-dans-tmp.sh/d' fichier
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
xunil2003
Messages postés
766
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
29 septembre 2024
14
25 mars 2015 à 12:51
25 mars 2015 à 12:51
Bonjour,
Quand je veux supprimer la ligne
"/etc/init.d/creer-un-dossier-temporaire-dans-tmp.sh" dans le fichier "/etc/rc.local", je fais :
Et quand je vérifie le contenu du fichier, il y a toujours la ligne "/etc/init.d/creer-un-dossier-temporaire-dans-tmp.sh" ?
Merci.
Quand je veux supprimer la ligne
"/etc/init.d/creer-un-dossier-temporaire-dans-tmp.sh" dans le fichier "/etc/rc.local", je fais :
laurent@Laurent-Bureau:~$ echo "suppression" ; sudo sed '/etc/init.d/creer-un-dossier-temporaire-dans-tmp.sh/d' /etc/rc.local
suppression
[sudo] password for laurent:
no talloc stackframe at ../source3/param/loadparm.c:4864, leaking memory
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
nit.d/creer-un-dossier-temporaire-dans-tmp.sh/d
/etc/init.d/creer-un-dossier-temporaire-dans-tmp.sh
exit 0
laurent@Laurent-Bureau:~$
Et quand je vérifie le contenu du fichier, il y a toujours la ligne "/etc/init.d/creer-un-dossier-temporaire-dans-tmp.sh" ?
laurent@Laurent-Bureau:~$ echo "Lecture contenu fichier" ; cat /etc/rc.local
Lecture contenu fichier
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
/etc/init.d/creer-un-dossier-temporaire-dans-tmp.sh
exit 0
laurent@Laurent-Bureau:~$
Merci.
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 622
25 mars 2015 à 13:51
25 mars 2015 à 13:51
xunil2003
Messages postés
766
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
29 septembre 2024
14
Modifié par xunil2003 le 25/03/2015 à 14:50
Modifié par xunil2003 le 25/03/2015 à 14:50
Re,*
J'ai du mal à utiliser sed et je le trouve compliqué.
J'ai déjà sauvegardé le fichier avant toute modification.
quand je fait ceci :
Contenu du fichier :
Merci.
J'ai du mal à utiliser sed et je le trouve compliqué.
J'ai déjà sauvegardé le fichier avant toute modification.
quand je fait ceci :
laurent@Laurent-Bureau:~$ sudo sed '/\/etc/init.d/creer-un-dossier-temporaire-dans-tmp.s\h/,/^$/d' /etc/rc.local
[sudo] password for laurent:
no talloc stackframe at ../source3/param/loadparm.c:4864, leaking memory
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
nit.d/creer-un-dossier-temporaire-dans-tmp.sh/,/^$/d
/etc/init.d/creer-un-dossier-temporaire-dans-tmp.sh
exit 0
laurent@Laurent-Bureau:~$
Contenu du fichier :
laurent@Laurent-Bureau:~$ cat /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
/etc/init.d/creer-un-dossier-temporaire-dans-tmp.sh
exit 0
laurent@Laurent-Bureau:~$
Merci.
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 622
Modifié par dubcek le 25/03/2015 à 16:31
Modifié par dubcek le 25/03/2015 à 16:31
il faut protéger tous les /
sans sed, mais il faut passer par une copie du fichier
sed '/\/etc\/init.d\/creer-un-dossier-temporaire-dans-tmp.sh/d' fichier
sans sed, mais il faut passer par une copie du fichier
grep -v '/etc/init.d/creer-un-dossier-temporaire-dans-tmp.sh' fichier > nouveau-fichier
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
>
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
25 mars 2015 à 17:43
25 mars 2015 à 17:43
Salut,
Cette syntaxe n'est bonne que pour les motifs, pour la commande de substitution on définit le caractère délimiteur directement, sans devoir le protéger.
Voir la FAQ sur sed
il faut protéger tous les /Ou dire à sed que le délimiteur a changé (seul le 1er doit être protégé) :
sed '\#/etc/init.d/creer-un-dossier-temporaire-dans-tmp.sh#d' fichier
Cette syntaxe n'est bonne que pour les motifs, pour la commande de substitution on définit le caractère délimiteur directement, sans devoir le protéger.
sed 's#bla#plop#' fichier
Voir la FAQ sur sed
xunil2003
Messages postés
766
Date d'inscription
mercredi 17 novembre 2004
Statut
Membre
Dernière intervention
29 septembre 2024
14
25 mars 2015 à 18:19
25 mars 2015 à 18:19
Re,
Ok jy suit arrivé.
Pour insérer :
Pour supprimer :
Il faut mettre à chaque fois "Sed -i. NOUV" avant, c'est ce que je n'avais pas compris
Merci.
Ok jy suit arrivé.
Pour insérer :
sudo sed -i.NOUV '$i/etc/init.d/creer-un-dossier-temporaire-dans-tmp.sh' /etc/rc.local
Pour supprimer :
sudo sed -i.NOUV '/\/etc\/init.d\/creer-un-dossier-temporaire-dans-tmp.sh/d' /etc/rc.local
Il faut mettre à chaque fois "Sed -i. NOUV" avant, c'est ce que je n'avais pas compris
Merci.