2009-01-14 11 views
0

J'écris un script shell pour, entre autres, déterminer la dernière fois qu'une branche a été créée dans un dépôt subversion. Le code suivant fonctionne:Bash text parsing golf

 

     DEV='http://some/svn/server/' 
     BRANCH='some/repos/branches/' 
     LAST_UPDATE=`svn list http://$DEV$BRANCH | sort -r` 
     LAST_UPDATE=${LAST_UPDATE:0:10} 
 

Mais je n'aime pas les deux dernières lignes. Comment puis-je les combiner ensemble?

 
NOTE: 

`svn list http://some/svn/server | sort -r` 
will return a list of folders such as: 
2009-01-12/ 
2009-01-11/ 
... 
2009-01-01/ 

Je suis juste essayer d'enlever le slash

Répondre

4

Que diriez-vous:

LAST_UPDATE=`svn list http://$DEV$BRANCH | sort -r | awk -F\/ '{print $1}'` 

Je ne l'ai pas testé, et je ne suis pas sûr si les citations à l'intérieur du back- tiques causera aucun problème, mais sinon je ne vois pas pourquoi cela ne fonctionnerait pas ...

Ben

+0

Je suis un homme, mais vous êtes l'homme aussi. J'ai presque tapé cela comme "-FV" au début puis j'ai réalisé que vous étiez en train d'échapper à la barre oblique. Sympa, merci! –

+0

Pas de soucis! J'aime awk. Il semble presque toujours aider dans des situations comme celle-ci. – Ben

+1

sed et awk sont deux bêtes que je suis récemment devenu assez courageux pour commencer à jouer avec –

0

Ano Ther, peut-être plus robuste suggestion, serait d'utiliser basename:

LAST_UPDATE=`svn list http://$DEV$BRANCH | sort -r | xargs -i basename {}` 

Le principal avantage est que basename sait sur la syntaxe de chemin et produira une représentation canonique, peu importe ce que les noms de fichiers loufoques que vous lancez.