Comment remplacer toute la ligne avec sed?
Supposons que j'ai un fichier avec des lignes
aaa=bbb
Maintenant, je voudrais 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 le remplacer tous ces lignes aaa=[something]
avec aaa=xxx
à l'aide de sed?
- Est
[something else]
du sens littéral du texte, ou est-ce juste un espace réservé? Qu'est-ce que la forme de la chose après le signe égal? - c'est plus d'une regex question qui n'est pas un sed question.
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
g
pour?.*
.g
remplacer toutes les instance de regexp avec remplacementVous pouvez également utiliser sed changer de ligne pour ce faire:
Cela va passer et de trouver toutes les lignes qui passent à la
aaa=
test, ce qui signifie que la ligne contient les lettresaaa=
. Puis il remplace l'ensemble de la ligne avec aaa=xxx. Vous pouvez ajouter un^
au début de l'examen pour s'assurer que vous obtenez seulement les lignes qui commencent paraaa=
mais c'est à vous de voir.sed
nécessitec
à être suivie par une barre oblique et un retour à la ligne, et il ne faut pas ajouter une nouvelle ligne pour le texte inséré, mais vous pouvez utiliser par exemple$'/aaa=/c\\\naaa=xxx\n'
.Comme ceci:
Si vous voulez être certain que le
aaa=
est au début de la ligne, la faire:sed 's/aaa=.*/aaa=\'xxx\'/'
mais qui ouvre un>
invite dans une nouvelle ligne...Si vous souhaitez utiliser
awk
alors ce serait trop de travailCela pourrait fonctionner pour vous:
bbb
,ccc
, etddd
est tout à fait ce que l'OP avait à l'esprit.