sed: sustituye en la línea que contiene X pero no contiene Y

sed: sustituye en la línea que contiene X pero no contiene Y

Estoy buscando una solución elegante que combine ambos comandos:

sed -i '/Y/! s/replace/with/' /path/to/file
sed -i '/X/ s/replace/with/' /path/to/file

Lo intenté

sed -i '/X/ /Y/! s/replace/with/' /path/to/file

lo cual no funciona. ¿Existe una solución elegante para eso?

Respuesta1

¿Algo como sed '/X/ {/Y/! s/replace/with/}'tal vez?

$ sed '/X/ {/Y/! s/replace/with/}' << EOF
X replace X
X replace Y
Y replace X
Y replace Y
EOF
X with X
X replace Y
Y replace X
Y replace Y

información relacionada