如何用单条sed命令去除字符串中的WEB-INF/lib/前缀
单条sed命令提取文件名的可行方案
针对你需要从字符串WEB-INF/lib/abc.jar提取abc.jar的需求,以下是几种单条sed命令的实现方式:
通用提取最后一个斜杠后的文件名:
这个方法不受前面路径结构限制,能直接提取最后一段文件名:echo "WEB-INF/lib/abc.jar" | sed 's/.*\///'原理:
.*\/会匹配从字符串开头到最后一个/的所有内容,将其替换为空后,剩下的就是目标文件名。精准替换指定路径前缀:
如果你的路径固定是WEB-INF/lib/开头,直接一次性替换前缀更精准:echo "WEB-INF/lib/abc.jar" | sed 's/WEB-INF\/lib\///'原理:直接匹配完整的前缀
WEB-INF/lib/并替换为空,一步得到结果。合并原有两条替换逻辑:
若想保留原来的替换思路,只需在单条sed里用分号分隔两个替换表达式(注意保留lib后的斜杠,避免残留多余符号):echo "WEB-INF/lib/abc.jar" | sed 's/WEB-INF//g; s/lib\///g'原理:先移除
WEB-INF,再移除lib/,最终得到目标文件名。
内容的提问来源于stack exchange,提问作者Scientist
相关产品推荐
相关产品推荐

