You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用sed打印每行匹配':'后剩余的内容?

问题描述

在Windows系统的Cygwin环境中,需要处理如下格式的文本文件:

log-2023-06-30-082821.txt:2023-06-30 08:30:32.648
log-2023-06-30-082821.txt:2023-06-30 08:32:07.235
log-2023-06-30-083220.txt:2023-06-30 08:32:55.831
log-2023-06-30-083604.txt:2023-06-30 08:36:39.380

目标是提取每行第一个冒号之后的所有内容,期望输出如下:

2023-06-30 08:30:32.648
2023-06-30 08:32:07.235
2023-06-30 08:32:55.831
2023-06-30 08:36:39.380

尝试过多个sed命令但没成功,求可行的实现方式。

可行解决方案

方法1:sed命令(修正版)

你之前的sed命令可能没写对正则规则,正确写法是匹配行首到第一个冒号的内容并替换为空:

sed 's/^[^:]*://' your_file.txt
  • ^[^:]*:匹配从行首开始到第一个冒号前的所有非冒号字符
  • ://:把匹配到的部分替换成空,剩下的就是冒号后的目标内容

直接在Cygwin的bash终端执行即可,记得替换your_file.txt为实际文件名。

方法2:awk命令

awk处理字段分割场景很灵活,两种写法都能实现需求:

# 方式1:截取第一个冒号后的所有内容
awk -F: '{print substr($0, index($0, ":")+1)}' your_file.txt
# 方式2:替换掉行首到第一个冒号的内容后打印
awk '{sub(/^[^:]*:/, ""); print}' your_file.txt

方法3:cut命令

这是最简洁的实现方式,指定冒号为分隔符,直接输出第2个及以后的字段:

cut -d: -f2- your_file.txt
  • -d::设置分隔符为冒号
  • -f2-:输出从第2个字段到最后一个字段,自动保留字段间的冒号

内容的提问来源于stack exchange,提问作者Jawad Ali Qamar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 04:13:07