regex - 查找/替换目录和 Bash 脚本

标签 regex linux bash unix

我有一些这样的路径:

/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”。即:

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

关于regex - 查找/替换目录和 Bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5474336/

相关文章:

bash - 如何检查我的本地 docker 镜像是否已过时,而无需从其他地方推送?

bash - 不带标点符号显示当前日期和时间

javascript - 仅使用 JavaScript 中的正则表达式选择第一个破折号

c++ - 通过 std::regex 从数学表达式制作树

linux - 解析ls,不推荐

bash - 意外标记 `(' 附近的语法错误(可能是 bash 错误)

java - 使用正则表达式获取子字符串

javascript - 使用 Javascript 正则表达式检测行尾或字符串结尾

linux - 在 linux 中使用自定义别名中的 find 命令没有得到结果

linux - 如何修复linux下编译错误