J'ai un script (source) pour analyser svn info
pour créer une chaîne appropriée pour Bash $PS1
. Malheureusement, cela ne fonctionne pas sur un système que j'utilise qui exécute Perl 5.8.8 - Il produit toutes les lignes au lieu de seulement les correspondances. Quel serait le Perl 5.8.8 équivalent à ce qui suit?Renvoie uniquement les correspondances de substitution en Perl 5.8.8 (était: Perl "p" équivalent modificateur regex)
__svn_ps1()
{
local result=$(
svn info 2>/dev/null | \
perl -pe 's;^URL: .*?/((trunk)|(branches|tags)/([^/]*)).*;\2\4 ;p')
if [ -n "$result" ]
then
printf "${1:- (%s)}" $result
fi
}
La sortie de Perl 5.10 contient uniquement un espace, entre parenthèses, une de nom de la branche, le nom d'étiquette ou trunk
, et la parenthèse d'extrémité. La sortie de Perl 5.8.8 (sans le p
final) contient cette plus une version entre parenthèses de chaque partie de la sortie svn info
séparée par des espaces.
Une solution de contournement possible implique un simple grep '^URL: '
entre les commandes svn
et perl
, mais j'espérais éviter cela car cela sera exécuté pour chaque invite Bash.
Pouvez-vous expliquer ce que vous essayez de faire - donner un fichier d'entrée et quelle sortie attendez-vous. – justintime
Peut-être que je ressemble à un enregistrement coincé, mais "Pouvez-vous expliquer ce que vous essayez de faire - donner un fichier d'entrée et quelle sortie vous attendez". Vous présentez beaucoup de solutions à moitié cuites mais je ne peux pas déterminer ce que vous voulez. – justintime