commande non valide code ., malgré échapper périodes, à l'aide de sed
Être obligé d'utiliser CVS pour un client actuel, et le changement d'adresse pour la télécommande des pensions. La seule façon que je peux trouver pour changer l'adresse distante dans mon local est un code récursif de recherche et de remplacement.
Cependant, avec la commande sed je m'attends à travailler:
find ./-type f -exec sed -i "s/192.168.20.1/new.domain.com/" {} \;
J'obtiens une erreur pour chaque fichier:
sed: 1: ".//file/path ...": invalid command code .
J'ai essayé d'échapper à des périodes de la sed match/de remplacement, mais qui ne résout rien.
Vous devez vous connecter pour publier un commentaire.
Si vous êtes sur un OS X, ce qui a probablement rien à voir avec la commande sed. Sur le OSX version de
sed
, le-i
option s'attend à uneextension
argument de sorte que votre commande est actuellement analysée comme laextension
argument et le chemin d'accès au fichier est interprété comme le code de commande.Essayez d'ajouter le
-e
argument explicitement et de donner''
comme argument pour-i
:Voir cette.
-e
optionRE error: illegal byte sequence
sur MacOS.sed -i '' 's/blah/xx/g'
-e
après-i
faitsed
de sauvegarde de tous mes fichiers de cette manière: "foo.txt" -> "foo.txt-e". Évidemment, ce que je voulais, c'était plutôt-i ''
, c'est à dire ne pas de sauvegarde des fichiers modifiés.-i -e
combiné avec unfind
a entraîné dans de nombreux de nombreux les fichiers se terminant par-e-e-e-e-e-e-e
.-i ''
sed
qui est l'installes sur Linux.Vous avez tout simplement oublié de fournir un argument à
-i
. Il suffit de changer-i
à-i ''
.Bien sûr, cela signifie que vous ne voulez pas que vos fichiers soient sauvegardés; sinon approvisionnement de votre poste de choix, comme
-i .bak
.Probablement votre nouveau nom de domaine contiennent
/
? Si oui, essayez d'utiliser un séparateur d'autres que/
danssed
, par exemple#
,,
etc.Il serait également bon de mettre les
s///
dans des guillemets simples plutôt que des guillemets pour éviter la substitution de variable ou de tout autre comportement inattendu