l’parsing du chemin sed ne fonctionne pas

pwd | sed "s%^\(/[^/]*/\).*?\(/[^/]+\)$%\1...\2%"

Je ne sais pas pourquoi cela ne fonctionne pas. J’ai essayé les écanvass gourmandes et non gourmandes après le premier groupe de capture. Je n’utilise même pas de lookaheads ou quoi que ce soit. Il fonctionne dans les testeurs de regex. J’essaie de saisir la première et la dernière partie de texte d’un chemin (pour l’écraser tout en fournissant une idée du répertoire dans lequel je suis).

C’est pour une ligne d’invite tmux que j’essaie d’éviter d’introduire quelque chose de lourd comme perl pour faire le travail.

Pourquoi ne pas utiliser les extensions de parameters ? Les extensions de parameters coûtent moins cher qu’une commande, un tube et une commande externe:

 start="${PWD#/}"; start="${start%%/*}" end="${PWD/*\//}" printf '/%s/…/%s $ ' "$start" "$end" 

Je l’ai eu après quelques essais supplémentaires:

pwd | sed "s%^\(/[^/]*/\).*\(/[^/]*\)$%\1...\2%"