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

如何用Linux的sed命令删除每行第三个'|'之前的内容?

如何用sed删除每行开头到第三个'|'的内容?

直接使用下面的sed命令即可实现需求:

sed 's/^[^|]*|[^|]*|[^|]*|//' tst.out

如果需要直接修改原文件(建议先备份后操作),可以加上-i参数:

# 适用于大部分Linux发行版的GNU sed
sed -i 's/^[^|]*|[^|]*|[^|]*|//' tst.out

# 适用于macOS等的BSD sed,需额外加空参数
sed -i '' 's/^[^|]*|[^|]*|[^|]*|//' tst.out

命令逻辑解释

这个替换规则的核心是精准匹配目标内容:

  • ^ 定位到每行的起始位置
  • [^|]* 匹配任意数量**非|**的字符
  • 重复三次 [^|]*|,刚好覆盖第三个|及其之前的所有内容
  • 用空字符串替换匹配到的部分,剩下的就是第三个|之后的内容

效果验证

原tst.out文件内容:

MIN AU 09/15/22 C39.5 Equit|0|75|MIN 9 C39.50|AU|BBG018NNGHR1|
TIN AU 09/15/22 C39.9 ITY|0|75|RIN 9 D39.50|AU|BBG018NNGHR45|
CIN AU 09/15/22 C39.8 Ref|0|75|PIN 9 F39.50|AU|BBG018NNGHR66|

执行命令后输出:

MIN 9 C39.50|AU|BBG018NNGHR1|
RIN 9 D39.50|AU|BBG018NNGHR45|
PIN 9 F39.50|AU|BBG018NNGHR66|

(注:你提供的预期结果中编号存在笔误,实际执行会保留原文件的正确编号)

内容的提问来源于stack exchange,提问作者Marcus

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 20:45:51