如何用sed删除24小时制时间与冒号之间的内容(含冒号)
解决方案
可以使用带扩展正则的sed命令,基于24小时制时间的精准匹配来实现需求,命令如下:
sed -E 's/(([01][0-9]|2[0-3]):[0-5][0-9])(.*:)/\1 /'
命令解释:
-E:启用扩展正则表达式,避免对括号等符号转义,简化写法([01][0-9]|2[0-3]):[0-5][0-9]:精准匹配24小时制时间格式(小时范围00-23,分钟范围00-59),并将其捕获为第一分组\1(.*:):匹配时间之后直到最后一个冒号的所有内容(包括冒号本身)- 替换逻辑:保留捕获的时间分组
\1,并添加一个空格,直接衔接冒号后的内容
测试验证:
输入示例:
#EXTINF:-1,21:30 UNWANTED TEXT: Apples - Oranges
执行命令后输出:
#EXTINF:-1,21:30 Apples - Oranges
该命令不依赖时间后的空格,只要行内存在符合24小时制的时间,就能精准定位并删除时间到目标冒号之间的冗余内容。
内容的提问来源于stack exchange,提问作者Kenthz
相关产品推荐
相关产品推荐

