Rechercher / Remplacer le répertoire et le script Bash

J’ai des chemins comme ça:

 /www/site1.dev/public_html/test.htm
 /www/site2.dev/html/test.htm
 /www/site3.dev/public/test.htm

Je voudrais les passer à un script bash et obtenir un résultat dans ce format:

 http://site1.dev/test.htm
 http://site2.dev/test.htm
 http://site3.dev/test.htm

Je ne suis pas sûr de la meilleure façon de gérer la partie regex de ceci:

 #! / bin / sh

 RET = '';

 fonction sortingm () {echo $ 1;  }


 pour ARG dans "$ @"
     faire
         // fait correspondre et ajoute une valeur RET existante
         RET = 'http: //' (expression régulière ou find / replace here) RET 
 terminé


 echo ">> $ (sortingm $ RET) <<"

Solution

Mon code basé sur la réponse de Wes Hardaker

         DOMAIN = `echo $ ARG |  sed's #. * www / ## '`
         DOMAIN = `echo $ DOMAIN |  sed -E's # / (public | html). * ## '`
         POST = `echo $ ARG |  sed -E's #. * html ## '`
         echo 'http: //' $ DOMAIN $ POST

Le moyen le plus simple est probablement d’utiliser sed. C’EST À DIRE:

RET="http://"`echo $ARG | sed 's#/www##;s#/(public_|)html/#/#;' 

en supposant que vos chemins sont dans un fichier

 $ awk 'BEGIN{OFS=FS="/"}{print "http:/"$1,$3,$NF}' file http://site1.dev/test.htm http://site2.dev/test.htm http://site3.dev/test.htm 

Rubis (1.9+)

 $ ruby -F"/" -ane 'print "http:/"+[$F[0],$F[2],$F[-1]].join("/")' file 
 command to generate list of pathnames | while read path; do IFS=/ set -- $path echo "http://$3/$5" done 

Une autre approche, si vous commencez à www/..

 pushd www find * -type f | while read line; do echo http://${line%%/*}/${line##*/}; done popd