Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

sed s nombre (entier ou autre)

4 réponses
Avatar
Rakotomandimby (R12y) Mihamina
Bonjour,
Dans un lot de fichier de configuration, je veux remplacer certains '0' par
des '1'.
Plus précisément, yum, peut avoir ses fichiers de configuration éclatés en
plein de petits fichiers.
Dans chaque fichier il y a une ligne
gpgcheck=1
Moi, avec sed, je veux mettre tous les gpgchecks à 0
Je fais:

grep -r 'gpgcheck' /etc/yum.repos.d/* | \
cut -f1 -d":" | uniq | \
xargs sed -i .bak 's,gpgcheck=1,gpgcheck=0,g'
Mais erreur:
sed: -e expression #1, char 1: unknown command: `.'

J'imagine bien que c'est le '1' et le '0' qui lui pose problème.
Il faut donc que je les échappe.
Je cherche avec "sed substitute number", "sed substitute integer", je ne
trouve pas mon bonheur. Un petit coup de main svp?
Merci d'avance.

4 réponses

Avatar
Nicolas George
R12y wrote in message <eqifkl$1huf$:
Mais erreur:
sed: -e expression #1, char 1: unknown command: `.'

J'imagine bien que c'est le '1' et le '0' qui lui pose problème.


Non, pas du tout. Lis mieux ton message d'erreur : c'est le point qui pose
problème. Comme il n'y a qu'un point dans ta ligne sed, tu devrais sans
problème trouver.

Avatar
Jacques L'helgoualc'h
Le 09-02-2007, Rakotomandimby (R12y) Mihamina a écrit :
Bonjour,


bonjour,

[...]
Je fais:

grep -r 'gpgcheck' /etc/yum.repos.d/* |
cut -f1 -d":" | uniq |
xargs sed -i .bak 's,gpgcheck=1,gpgcheck=0,g'
Mais erreur:
sed: -e expression #1, char 1: unknown command: `.'

J'imagine bien que c'est le '1' et le '0' qui lui pose problème.


Non, c'est l'espace entre -i et .bak : du coup, .bak est interprété
comme une commande Sed, et -i a un paramètre vide (pas de sauvegarde
pour les Vrais Hommes :)

Merci d'avance.


de rien,
--
Jacques L'helgoualc'h

Avatar
Pascal Bourguignon
"Rakotomandimby (R12y) Mihamina" writes:

Bonjour,
Dans un lot de fichier de configuration, je veux remplacer certains '0' par
des '1'.
Plus précisément, yum, peut avoir ses fichiers de configuration éclatés en
plein de petits fichiers.
Dans chaque fichier il y a une ligne
gpgcheck=1
Moi, avec sed, je veux mettre tous les gpgchecks à 0


for f in /etc/yum.repos.d/* ; do
cp $f ${f}~ && sed -e 's,gpgcheck=1,gpgcheck=0,g' < ${f}~ > $f
done


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

ADVISORY: There is an extremely small but nonzero chance that,
through a process known as "tunneling," this product may
spontaneously disappear from its present location and reappear at
any random place in the universe, including your neighbor's
domicile. The manufacturer will not be responsible for any damages
or inconveniences that may result.

Avatar
Stephane Chazelas
2007-02-09, 19:49(+01), Rakotomandimby (R12y) Mihamina:
Bonjour,
Dans un lot de fichier de configuration, je veux remplacer certains '0' par
des '1'.
Plus précisément, yum, peut avoir ses fichiers de configuration éclatés en
plein de petits fichiers.
Dans chaque fichier il y a une ligne
gpgcheck=1
Moi, avec sed, je veux mettre tous les gpgchecks à 0
Je fais:

grep -r 'gpgcheck' /etc/yum.repos.d/* |
cut -f1 -d":" | uniq |
xargs sed -i .bak 's,gpgcheck=1,gpgcheck=0,g'
Mais erreur:
sed: -e expression #1, char 1: unknown command: `.'

J'imagine bien que c'est le '1' et le '0' qui lui pose problème.
Il faut donc que je les échappe.
Je cherche avec "sed substitute number", "sed substitute integer", je ne
trouve pas mon bonheur. Un petit coup de main svp?


Vu que tu utilises deja des trucs GNU-specifics, tu devrais
plutot faire

grep -lrZ gpgcheck /etc/yum.repos.d |
xargs -r0 sed -i.bak s,gpgcheck=1,gpgcheck=0,g


--
Stéphane