使用sed解析含百分号的子字符串遇阻,请求排查错误
问题与解决
问题场景
执行以下sed命令无法提取目标字符串:
echo '/documents/types/count/%5B%22cast%20arinfo%22%5D' | sed -En "s/(.*)%.*/\1/p"
期望输出:
/documents/types/count/
排查与修复
原命令里的.*是贪婪匹配语法,虽然你的输入里只有一个%,但这种写法在复杂场景下容易出现意外匹配。换用精准匹配非%字符的写法,能彻底解决问题:
echo '/documents/types/count/%5B%22cast%20arinfo%22%5D' | sed -En "s/([^%]*)%.*/\1/p"
或者用更简洁的写法,直接删除%及后续所有内容:
echo '/documents/types/count/%5B%22cast%20arinfo%22%5D' | sed -E 's/%.*//'
上述两个命令都能输出你需要的结果。
内容的提问来源于stack exchange,提问作者user3008410
相关产品推荐
相关产品推荐

