Обычный или садовый сорт sed
регулярное выражение не понимает +. Да, я знаю, как это глупо. Так что это эквивалентная, рабочая версия вашей командной строки:
sed 's/\([^ ][^ ]*\) your \([^ ][^ ]*\)/ \2\1er/' < fail
Также работает для запроса расширенного регулярного выражения, в этом случае вы отбрасываете обратную косую черту в скобках:
sed -r 's/([^ ]+) your ([^ ]+)/ \2\1er/' < fail