web-dev-qa-db-fra.com

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 = jjj 
 aaa = [autre chose]

Comment puis-je remplacer tout ces lignes aaa=[something] par aaa=xxx à l'aide de sed?

99
Michael

Essaye ça:

sed "s/aaa=.*/aaa=xxx/g"
163
John Doyle

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

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

Cela va parcourir 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 cela dépend de vous.

89
Mr. T

Comme ça:

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

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

sed 's/^aaa=.*/aaa=xxx/'
40
Michael J. Barber
sed -i.bak 's/\(aaa=\).*/\1"xxx"/g' your_file
3
Vijay

Si vous souhaitez utiliser awk, cela fonctionnera aussi

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

Cela pourrait fonctionner pour vous:

cat <<! | sed '/aaa=\(bbb\|ccc\|ddd\)/!s/\(aaa=\).*/\1xxx/'
> aaa=bbb
> aaa=ccc
> aaa=ddd
> aaa=[something else]
!
aaa=bbb
aaa=ccc
aaa=ddd
aaa=xxx
1
potong