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?
Essaye ça:
sed "s/aaa=.*/aaa=xxx/g"
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.
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/'
sed -i.bak 's/\(aaa=\).*/\1"xxx"/g' your_file
Si vous souhaitez utiliser awk
, cela fonctionnera aussi
awk -F= '{$2="xxx";print}' OFS="\=" filename
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