宇宙主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

欧基零壹微头条IP归属甄别会员请立即修改密码
查看: 1780|回复: 22

大佬们,这个shell怎么写,一行命令写出来,可以用sed

[复制链接]
发表于 2022-9-21 20:52:35 | 显示全部楼层 |阅读模式
convert https://www.baidu.com/aaa/bbb/ccc/xxx.zip to www-baidu-com-aaa-bbb-ccc-xxx

要兼容 schema 是 http 的情况,即

也要把 http://www.baidu.com/aaa/bbb/ccc/xxx.zip 转化成 www-baidu-com-aaa-bbb-ccc-xxx
发表于 2022-9-21 21:32:02 | 显示全部楼层
HOH 发表于 2022-9-21 21:08
跟@iks 一样什么都想用正则搞


你懂什么,我用正则替换你家的丧葬费发
发表于 2022-9-21 21:24:42 | 显示全部楼层
要啥sed,shell内置功能就可以
  1. parse () { : "${1#*://}"; : "${_////-}"; : "${_//./-}"; echo "${_%-*}"; }
复制代码
  1. $ parse 'http://www.baidu.com/aaa/bbb/ccc/xxx.zip'
  2. www-baidu-com-aaa-bbb-ccc-xxx
  3. $ parse 'https://www.baidu.com/aaa/bbb/ccc/xxx.zip'
  4. www-baidu-com-aaa-bbb-ccc-xxx
复制代码

点评

这个好像看着有点复杂....  发表于 2022-9-21 21:27
发表于 2022-9-21 21:07:23 | 显示全部楼层

好难~
 楼主| 发表于 2022-9-21 20:54:29 | 显示全部楼层
sed 对正则表达式的支持不全,尝试了几十分钟都没有写对,求助大佬们。
发表于 2022-9-21 21:08:42 | 显示全部楼层
@iks 一样什么都想用正则搞
 楼主| 发表于 2022-9-21 21:12:47 | 显示全部楼层
  1. echo "https://www.baidu.com/aaa/bbb/ccc/xxx.iso" | awk -F"//" '{print $2}' | sed  "s/\//-/g" | sed "s/\./-/g"
复制代码




这样写出来了,但这样实现与我的初衷有点违背,我希望一次 sed 就能拿到值

发表于 2022-9-21 21:17:22 | 显示全部楼层
fg9907 发表于 2022-9-21 21:12
这样写出来了,但这样实现与我的初衷有点违背,我希望一次 sed 就能拿到值

...

强迫症吗
 楼主| 发表于 2022-9-21 21:21:00 | 显示全部楼层

好吧  
 楼主| 发表于 2022-9-21 21:22:49 | 显示全部楼层
  1. $ echo "https://www.baidu.com/aaa/bbb/ccc/xxx.zip" | awk -F"//" '{print $2}' | sed  "s/\//-/g" | sed "s/\./-/g" | sed "s/.zip//g"
  2. www-baidu-com-aaa-bbb-ccc-xxx
复制代码
发表于 2022-9-21 21:23:21 | 显示全部楼层

echo "https://www.baidu.com/aaa/bbb/ccc/xxx.iso" | sed -e "s/https:\/\///g" -e "s/\//-/g" -e "s/\./-/g"
使用-e 匹配多个条件
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|FastFib VPS论坛

GMT+8, 2024-9-20 14:57 , Processed in 0.067189 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表