Commentaires
- tldp.org/LDP/abs/html/x23170.html
- grymoire.com/Unix/Sed.html
- Cela ne doit pas être marqué comme un doublon car lautre réponse référencée ne ' t vous montrer comment remplacer sur un fichier singulier, contrairement à cette réponse. Soit cela, soit intégrez cette réponse dans celle-ci
Réponse
sed
est le s trame ed itor , en ce que vous pouvez utiliser |
(pipe) pour envoyer flux standard (STDIN et STDOUT spécifiquement) via sed
et les modifier par programmation à la volée, ce qui en fait un outil pratique dans la tradition de la philosophie Unix; mais peut également modifier les fichiers directement à laide du paramètre -i
mentionné ci-dessous.
Tenez compte de ce qui suit :
sed -i -e "s/few/asd/g" hello.txt
s/
est utilisé pour s substituer lexpression trouvée few
avec asd
:
Les rares, les courageux.
Lasd , les courageux.
/g
signifie « global », ce qui signifie faire cela pour toute la ligne. Si vous omettez /g
(avec s/few/asd/
, il doit toujours y avoir trois barres obliques quoi quil arrive) et few
apparaît deux fois sur la même ligne, seul le premier few
est remplacé par asd
:
Les quelques hommes, les quelques femmes, les courageux.
Les hommes asd, les quelques femmes, les courageux.
Ceci est utile dans certaines circonstances, comme la modification des caractères spéciaux au début des lignes (par exemple, en remplaçant les symboles plus grands que certaines personnes utilisent pour citer le matériel précédent dans les fils de discussion. avec une tabulation horizontale tout en laissant une inégalité algébrique entre guillemets plus tard dans la ligne intacte), mais dans votre exemple où vous spécifiez que nimporte où few
se produit, il doit être remplacé , assurez-vous que /g
.
Les deux options (indicateurs) suivantes sont combinées en une seule, :
-i
loption est utilisée pour modifier i n place sur le fichier hello.txt
.
-e
indique loption e xpression / commande à exécuter, dans ce cas s/
.
Remarque: Il est important que vous utilisiez -i -e
pour rechercher / remplacer. Si vous faites -ie
, vous créez une sauvegarde de chaque fichier avec la lettre « e » ajoutée.
Commentaires
- Je ' m sous OS X, pour ce que vaut ', mais voici lerreur que jobtiens: sed: 1: " hello.txt ": code de commande non valide.
- Une modification a été proposée pour ajouter le -e drapeau à sed. Lindicateur -e est facultatif tant que la commande à exécuter apparaît en premier, il ny a pas de fichier de commande et de commande arg, et il ny a quune seule commande.
- @roo sur mac os x, en utilisant
-ie
Je reçois ce fichierfoo
est sauvegardé en tant quefooe
. - cette commande me donne un fichier supplémentaire se terminant par -e, pourquoi ??: index.html-e sed -i -e ' s / n / d / g ' index.html
- Sur Mac, -i -e crée un nouveau fichier avec -e ajouté au nom. Cela semble fonctionner dans bash: sed " -i " " " " -e " " s / quelques / asd / g " " un fichier.xml "
Réponse
sed -i "s/fea/asd/g" hello.txt
g: Global
s: remplace
-i : fonctionne en temps réel avec le fichier inplace
Commentaires
- Lorsquil sagit de liens symboliques, il est bon dajouter
--follow-symlinks
sinon-i
transformera le lien symbolique en une copie (modifiée) du fichier.