regex - tag - ¿Cómo reemplazar toda la línea con sed?
sed regex replace (6)
Supongamos que tengo un archivo con líneas
aaa=bbb
Ahora me gustaría reemplazarlos por:
aaa=xxx
Puedo hacer eso de la siguiente manera:
sed "s/aaa=bbb/aaa=xxx/g"
Ahora tengo un archivo con algunas líneas de la siguiente manera:
aaa=bbb aaa=ccc aaa=ddd aaa=[something else]
¿Cómo puedo reemplazar todas estas líneas aaa=[something]
con aaa=xxx
usando sed ?
Esto podría funcionar para usted:
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
Me gusta esto:
sed ''s/aaa=.*/aaa=xxx/''
Si quiere garantizar que aaa=
está al comienzo de la línea, hágalo:
sed ''s/^aaa=.*/aaa=xxx/''
Prueba esto:
sed "s/aaa=.*/aaa=xxx/g"
Si desea usar awk
, esto también funcionaría
awk -F= ''{$2="xxx";print}'' OFS="/=" filename
También puede usar la línea de cambio de sed para lograr esto:
sed -i "/aaa=/c/aaa=xxx" your_file_here
Esto pasará y encontrará cualquier línea que pase la prueba aaa=
, lo que significa que la línea contiene las letras aaa=
. Luego reemplaza toda la línea con aaa = xxx. Puedes agregar ^
al comienzo de la prueba para asegurarte de que solo obtienes las líneas que comienzan con aaa=
pero eso depende de ti.
sed -i.bak ''s//(aaa=/).*//1"xxx"/g'' your_file