When using the "y" command, it seems like square bracket balancing is required. Square brackets should instead be treated like any other character in the "y" cmd context, as they are already at the time of doing the actual character replacement: sh$ echo | sed 'y/[/x/' sed: 1: "y/[/x/": unbalanced brackets ([]) sh$ echo | sed 'y/[]/xy/' sed: 1: "y/[]/xy/": unbalanced brackets ([]) sh$ echo | sed 'y/[a]/xyz/' sh$ echo '][a' | sed 'y/[a]/xyz/' zxy
(In reply to Quentin L'Hours from comment #0) Could you please check if the patch from review fixes the issue for you?
(In reply to Yuri Pankov from comment #1) Yep works perfectly with this patch, thanks!
Created attachment 216441 [details] patch for exp-run
Asking for exp-run on this change as sed has quite a history of backouts as breaking the ports.
Exp-run looks fine
A commit references this bug: Author: yuripv Date: Sun Jul 26 09:15:05 UTC 2020 New revision: 363543 URL: https://svnweb.freebsd.org/changeset/base/363543 Log: sed: treat '[' as ordinary character in 'y' command 'y' does not handle bracket expressions, treat '[' as ordinary character and do not apply bracket expression checks (GNU sed agrees). PR: 247931 Reviewed by: pfg, kevans Tested by: antoine (exp-run), Quentin L'Hours <lhoursquentin@gmail.com> Differential Revision: https://reviews.freebsd.org/D25640 Changes: head/usr.bin/sed/compile.c head/usr.bin/sed/tests/sed2_test.sh
^Triage: committed back in 2020.