203 votes

Comment remplacer toute la ligne avec sed?

Supposons que j'ai un fichier avec des lignes

 aaa = bbb 

Maintenant, j'aimerais les remplacer par:

 aaa = xxx 

Je peux le faire comme suit:

 sed "s / aaa = bbb / aaa = xxx / g" 

Maintenant, j'ai un fichier avec quelques lignes comme suit:

 aaa = bbb
aaa = ccc
aaa = ddd
aaa = [autre chose] 

Comment puis-je remplacer toutes ces lignes aaa=[something] par aaa=xxx utilisant sed ?

303voto

John Doyle Points 3541

Essaye ça:

 sed "s/aaa=.*/aaa=xxx/g"
 

176voto

Mr. T Points 4405

Vous pouvez également utiliser la ligne de changement de sed pour accomplir ceci:

 sed -i "/aaa=/c\aaa=xxx" your_file_here
 

Cela va passer et trouver toutes les lignes qui passent le test aaa= , ce qui signifie que la ligne contient les lettres aaa= . Ensuite, il remplace la ligne entière par aaa = xxx. Vous pouvez ajouter un ^ au début du test pour vous assurer que vous n'obtenez que les lignes commençant par aaa= mais c'est à vous de décider.

51voto

Michael J. Barber Points 12837

Comme ça:

 sed 's/aaa=.*/aaa=xxx/'
 

Si vous voulez garantir que le aaa= est au début de la ligne, faites-le:

 sed 's/^aaa=.*/aaa=xxx/'
 

4voto

Vijay Points 17992
sed -i.bak 's/\(aaa=\).*/\1"xxx"/g' your_file

2voto

jaypal Points 34440

Si vous souhaitez utiliser awk cela fonctionnerait aussi

 awk -F= '{$2="xxx";print}' OFS="\=" filename
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X