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.