1 votes

Remplacer tous les sous-domaines d'un fichier par un autre nom de domaine en utilisant sed & wildcard

Remplacer tous les noms de sous-domaines dans un fichier par un nom de domaine différent en utilisant un caractère générique.

Ex : Dans un fichier, j'ai les domaines suivants :

example1.domain1.com    
example2.domain1.com 
example3.domain1.com

Je veux remplacer ces noms de sous-domaines par domaine2.com . J'ai essayé d'utiliser la commande sed ci-dessous. Cela fonctionne bien si la taille du fichier est petite. Mais pour les gros fichiers, il semble que l'exécution de la commande ne se termine jamais. Je veux utiliser un joker ici puisque le texte à remplacer a le même nom de domaine, c'est-à-dire domain1.com.

sed -i s/.*.domain1.com/domain2.com/g test.txt

4voto

pLumo Points 23269

Si vous utilisez .*.domain1.com en tant que modèle, vous ferez correspondre les caractères non désirés, car . signifie cualquier caractère.
Vous souhaitez remplacer uniquement les "caractères de mot" (lettres ASCII, chiffres ou caractères de soulignement) en utilisant la fonction \w+ .

Comme d'habitude sed regex n'est pas au courant de + assurez-vous d'ajouter -r para sed pour utiliser la regex étendue.

Veillez également à utiliser des guillemets ! Sinon, * pourrait être interprété par bash.
Et vous devriez vous échapper . dans le motif, sinon il correspondra également à n'importe quel caractère.

sed -i.bak -r 's/\w+\.domain1\.com/domain2.com/g' file

1voto

αғsнιη Points 33236

使用方法 sed -i 's/domain1/domain2/' infile .

Si vous voulez remplacer *.domain1.com puis changer comme :

sed 's/.*domain1/domain2/' infile

Assurez-vous qu'au premier essai, vous n'utilisez pas -i qui remplacera in-place dans votre fichier.

0voto

Mr. Linux Points 127

Ouvrez le fichier dans l'éditeur vi. Puis tapez la commande ci-dessous en mode ligne de l'éditeur vi :

#vi file_name 
example1.domain1.com
example2.domain1.com 
example3.domain1.com

:%s/domain1/domain2/g  hit enter now

Fait !

Note : domain1 est une chaîne déjà existante. domain2 est une nouvelle chaîne.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X