GNU/Linux >> Tutoriels Linux >  >> Linux

Utiliser Sed pour remplacer une chaîne par une chaîne contenant un nom de répertoire (c'est-à-dire une barre oblique "/") ?

Je sais que cela a déjà été demandé, mais j'ai du mal à comprendre les réponses que j'ai trouvées. Fondamentalement, je veux utiliser

sed -i 's/string//some/directory/g' file.txt

et je ne trouve pas de réponse directe sur la façon de créer /some/directory ne pas briser le sed syntaxe.

Réponse acceptée :

sed autorise plusieurs délimiteurs de syntaxe, / n'étant que le plus couramment utilisé.

Vous pouvez tout aussi bien dire

sed -i 's,<string>,<some/directory>,g' file.txt

où le , a maintenant la fonction habituellement remplie par le / , libérant ainsi ce dernier de sa signification particulière.

Notez cependant (comme l'a souligné @Jeff Schaller), que maintenant le , ne doit pas apparaître dans le nom du fichier ou du répertoire - et il s'agit d'un caractère valide pour les noms de fichiers ! Cette réponse donne un bon aperçu de la façon de procéder lors de l'application de sed en une chaîne avec des caractères spéciaux.


Linux
  1. Comment utiliser Sed pour remplacer une chaîne multiligne ?

  2. Comment utiliser Sed ou Ex pour remplacer un bloc (code multiligne) par un nouveau bloc de texte (code) ?

  3. Quand dois-je utiliser une barre oblique finale sur un répertoire ? ?

  4. Linux - La barre oblique (/) fait-elle partie du nom du répertoire racine Linux ?

  5. Remplacer un mot par un autre en bash

Comment utiliser sed pour rechercher et remplacer une chaîne dans des fichiers

Comment utiliser la commande SED pour rechercher et remplacer une chaîne dans des fichiers

Top 20 des commandes sed à utiliser

Comment remplacer une chaîne dans un ou plusieurs fichiers ?

Comment remplacer une chaîne par une chaîne contenant une barre oblique avec Sed ?

Comment utiliser Sed pour rechercher et remplacer une chaîne dans un fichier