Ich habe ein Skript (source) zu analysieren svn info
, um eine geeignete Zeichenfolge für Bash $PS1
zu erstellen. Leider funktioniert das nicht auf einem System, das ich benutze, das Perl 5.8.8 ausführt - Es gibt alle Zeilen statt nur die Übereinstimmungen aus. Was wäre das Perl 5.8.8, das dem Folgenden entspricht?Zurück nur Übereinstimmungen von Substitution in Perl 5.8.8 (war: Perl "p" Regex Modifikator entspricht)
__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
}
Die Ausgabe von Perl 5.10 enthält nur eine Raum, Klammer, einen Zweignamen, Tag-Namen oder trunk
und das Ende Klammer. Die Ausgabe von Perl 5.8.8 (ohne die letzte) enthält diese plus eine geklammerte Version jedes durch Leerzeichen getrennten Teils der svn info
Ausgabe.
Eine mögliche Problemumgehung beinhaltet eine einfache grep '^URL: '
zwischen den svn
und perl
Befehle, aber ich hatte gehofft, dies zu vermeiden, da dies für jede Bash Prompt ausgeführt wird.
Können Sie erklären, was Sie zu tun versuchen - geben Sie eine Eingabedatei und welche Ausgabe Sie erwarten. – justintime
Vielleicht höre ich mich wie eine festgefahrene Platte an, aber "Kannst du erklären, was du zu tun versuchst - gib eine Eingabedatei und welche Ausgabe erwartest du". Sie präsentieren viele halbgebackene Lösungen, aber ich kann nicht herausfinden, was Sie wollen. – justintime