sed:在包含 X 但不包含 Y 的行中替换

GEO*_*GEO 4 sed

我正在寻找一种结合了这两个命令的优雅解决方案:

sed -i '/Y/! s/replace/with/' /path/to/file
sed -i '/X/ s/replace/with/' /path/to/file
Run Code Online (Sandbox Code Playgroud)

我试过

sed -i '/X/ /Y/! s/replace/with/' /path/to/file
Run Code Online (Sandbox Code Playgroud)

这不起作用。有没有一个优雅的解决方案?

ste*_*ver 9

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
Run Code Online (Sandbox Code Playgroud)