Não, o comando y se aplica a todos os caracteres correspondentes no espaço padrão. De acordo com a sed documentação POSIX (enfatize a minha):
[2addr]y/string1/string2/
Replace all occurrences of characters in string1
with the corresponding characters in string2.
[2addr]y/string1/string2/
Replace all occurrences of characters in string1 in the pattern
space with the corresponding characters from string2.
e GNU sed info página:
y/source-chars/dest-chars/
Transliterate any characters in the pattern space which match any of
the source-chars with the corresponding character in dest-chars.
Claro, você pode usar o buffer de retenção para salvar o espaço de padrão atual e, depois, reter apenas a correspondência, transliterar e restaurar o espaço de padrão substituindo a correspondência inicial com o resultado. comparar
sed 'y/words/evles/' <<<'words whispered by the drows'
com
sed 'h;s/.*\(drows\).*//;y/words/evles/;G;s/\(.*\)\n\(.*\)drows\(.*\)//' <<<'words whispered by the drows'
mas assim que você começa a adicionar padrões / requisitos, fica complicado.