perl -pi.back -e 's/(\w+)-(\w+ed)\b/$2 with $1/g' ./*.txt
Isso é portátil e funcionaria com qualquer sistema com perl
instalado.
Em sistemas GNU recentes, você pode fazer algo similar com o GNU sed
:
sed -ri.back 's/(\w+)-(\w+ed)\b/ with /g'
POSIXly:
for f in ./*.txt; do
mv -i "$f" "$f.back" &&
sed -e :1 -e 's/\([[:alnum:]]\{1,\}\)-\([[:alnum:]]\{1,\}ed\)\(\([^[:alnum:]].*\)\{0,1\}\)$/ with /;t1' < "$f.back" > "$f"
done