sed: подставить в строку, содержащую X, но не содержащую Y

sed: подставить в строку, содержащую X, но не содержащую Y

Я ищу элегантное решение, объединяющее обе эти команды:

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

Я пытался

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

что не работает. Есть ли элегантное решение для этого?

решение1

Что-то вроде sed '/X/ {/Y/! s/replace/with/}'того, может быть?

$ 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

Связанный контент