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 remplacer toutes ces lignes aaa=[something]
en aaa=xxx
utilisant sed ?
[something else]
le texte littéral ou est-ce juste un espace réservé? Quel est le format possible de la chose après le signe égal?Réponses:
Essaye ça:
la source
.*
.g
remplacez toutes les instances de regexp par remplacementVous pouvez également utiliser la ligne de changement de sed pour ce faire:
Cela passera par et trouvera toutes les lignes qui réussissent le
aaa=
test, ce qui signifie que la ligne contient les lettresaaa=
. Ensuite, il remplace la ligne entière par aaa = xxx. Vous pouvez ajouter un^
au début du test pour vous assurer de n'obtenir que les lignes qui commencent par,aaa=
mais c'est à vous de décider .la source
sed
doitc
être suivi d'une barre oblique inverse et d'une nouvelle ligne, et il n'ajoute pas de nouvelle ligne au texte inséré, mais vous pouvez utiliser par exemple$'/aaa=/c\\\naaa=xxx\n'
.Comme ça:
Si vous voulez garantir que le
aaa=
est au début de la ligne, faites-le:la source
sed 's/aaa=.*/aaa=\'xxx\'/'
mais cela ouvre une>
invite dans une nouvelle ligne ...Si vous souhaitez utiliser,
awk
cela fonctionnerait aussila source
la source
Cela pourrait fonctionner pour vous:
la source
bbb
,ccc
etddd
est tout à fait ce que l'OP avait à l' esprit.