bash - Bash 删除变量中最后 2 个“/”符号之前的所有符号
问题描述
挣扎。请帮忙。
a="/var/www/test/some/page3.html"
我需要将其转换为
a="some/page3.html"
我正在努力
a=$(sed "s~/var/www/test/~~g" $a)
但得到 baaaad 结果。
解决方案
Bash 参数解析。
无需运行子进程。
$: a="/var/www/test/some/page3.html"
$: echo "${a%/*/*}" # the part you want to get rid of
/var/www/test
$: echo "${a#${a%/*/*}}" # strip that
/some/page3.html
如果你也想摆脱那个前导斜线......
$: echo "${a#${a%/*/*}/}"
some/page3.html
推荐阅读
- rust - 在实现特征以访问许多结构中的字段时,如何避免代码重复?
- powershell - 在 Powershell 中,如何找到包含文本的文件名或其中包含文本的文件
- python - 如果 id 等于 X,则应用函数
- database - 我可以使用 SQLCMD 进行差异备份而不是完整备份吗?
- reactjs - 通过地图呈现数据 - 无法读取属性
- linux - 等离子小部件自动左对齐
- networking - 如何配置 pingdom 和公共 IP 服务器来监控和生成 XML 文件
- sql - 是否有一个通用术语来扩展列表,首先在一个方向上遵循交叉引用,然后在另一个方向上?
- python-requests - 由于 newrelic、traceparent 和 tracestate 的响应 403 和 405
- airflow - 气流 dag 文件已就位,但当我执行气流 dags 列表时它没有显示