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

使用Bash脚本结合Sed条件为文件指定字段添加W前缀

用Sed实现条件添加前缀的解决方案

针对你需要给每行第二个|后非W开头的内容添加W前缀的需求,这里有个简洁的Sed命令可以搞定:

sed -E 's/^([^|]*\|[^|]*\|)([^W])/\1W\2/' your_input_file.txt

命令细节解释:

  • -E:启用扩展正则表达式,让分组和匹配逻辑更简洁,不用额外转义括号
  • ^([^|]*\|[^|]*\|):捕获行开头到第二个|的完整部分(也就是前两个字段加分隔符),存为第一个捕获组\1
  • ([^W]):匹配第二个|后的第一个字符,仅当这个字符不是W时才触发替换,把这个字符存为第二个捕获组\2
  • \1W\2:将匹配到的部分替换成「第一个捕获组」+W+「第二个捕获组」,从而给非W开头的内容自动加上前缀

测试效果验证:

拿你提供的输入示例测试,处理后结果如下:

ABD|66732|W987|01/06/2019 10:00|I
ABD|66732|W927|01/06/2019 10:01|I
ABD|66732|W917|01/06/2019 10:02|I (原内容已以W开头,无变化)
ABD|66732|W947|01/06/2019 10:03|I
ABD|66732|W977|01/06/2019 10:04|I (原内容已以W开头,无变化)
ABD|66732|W997|01/06/2019 10:05|I

直接修改原文件的方式:

如果需要直接修改原文件(而不是仅输出到终端),可以加上-i选项:

  • GNU Sed(Linux环境):
    sed -i -E 's/^([^|]*\|[^|]*\|)([^W])/\1W\2/' your_input_file.txt
    
  • BSD Sed(macOS环境):
    sed -i '' -E 's/^([^|]*\|[^|]*\|)([^W])/\1W\2/' your_input_file.txt
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 17:02:27