Shell 命令将 url 切入相

Shell command to cut the url into phase

我想把我的 url https://jenkins-crumbtest2.origin-ctc-core-nonprod.com/ 剪成 https://jenkins.origin-ctc-core-nonprod.com:443。我尝试了几种方法来处理它

尝试过这些方法

$ echo https://jenkins-crumbtest2.origin-ctc-core-nonprod.com/ | cut -d"/" -f3 | cut -d"/" -f5
jenkins-crumbtest2.origin-ctc-core-nonprod.com

输入:

https://jenkins-crumbtest2.origin-ctc-core-nonprod.com/

预期输出:

https://jenkins.origin-ctc-core-nonprod.com:443

能否请您尝试以下内容,仅根据显示的示例编写。

awk '{sub(/jenkins-[^.]*/,"jenkins");sub(/\/$/,":443")} 1' Input_file

或者用 echo 试试:

echo "https://jenkins-crumbtest2.origin-ctc-core-nonprod.com/" |
awk '{sub(/jenkins-[^.]*/,"jenkins");sub(/\/$/,":443")} 1'

说明:将 echo 命令输出作为输入发送到 awk 命令,然后使用 awk 的子函数首先替换从关键字 Jenkins 到点带有字符串 Jenkins 的所有内容。然后用行中的 :443 替换最后一次出现的 /。

perl 根据方案查找适当端口号的单行程序,而不是假设 https:

$ printf "%s\n" "https://jenkins-crumbtest2.origin-ctc-core-nonprod.com/" \
                "http://jenkins-crumbtest2.origin-ctc-core-nonprod.com/"  \
                "ftp://jenkins-crumbtest2.origin-ctc-core-nonprod.com/"   |
    perl -F: -lane 'print s!-crumbtest2|/$!!rg, ":", scalar getservbyname($F[0], "tcp")'
https://jenkins.origin-ctc-core-nonprod.com:443
http://jenkins.origin-ctc-core-nonprod.com:80
ftp://jenkins.origin-ctc-core-nonprod.com:21