[英]Bash Script Regular Expressions...How to find and replace all matches?
[英]Find / Replace Directory and Bash Script
我有一些这样的路径:
/www/site1.dev/public_html/test.htm /www/site2.dev/html/test.htm /www/site3.dev/public/test.htm
我想将它们传递给bash脚本并以以下格式返回结果:
http://site1.dev/test.htm http://site2.dev/test.htm http://site3.dev/test.htm
我不确定处理此正则表达式部分的最佳方法是:
#!/bin/sh RET=''; function trim() { echo $1; } for ARG in "$@" do //do match and add existing RET value RET= 'http://'(regular expression or find/replace here) RET done echo ">>$(trim $RET)<<"
解
我的代码基于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
最简单的方法可能是使用“ sed”。 IE浏览器:
RET="http://"`echo $ARG | sed 's#/www##;s#/(public_|)html/#/#;'
假设您的路径在文件中
$ 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
红宝石(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
如果您是从www/..
开始的话,则是另一种方法www/..
pushd www
find * -type f | while read line; do echo http://${line%%/*}/${line##*/}; done
popd
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.