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

Unix环境下替换管道分隔文件第四列指定字符串的方法

解决管道分隔文件第四列特定字符串替换问题

这里有两种实用的命令行工具方案,完美匹配你的需求——仅将第四列中的1-8替换为01-08,其余列内容丝毫不改动:

方法一:用awk处理(推荐,列操作更直观)

awk天生擅长按列处理文本,命令逻辑清晰易懂:

awk -F'|' 'BEGIN{OFS="|"} $4 == "1-8" { $4 = "01-08" } 1' input.txt > output.txt

命令细节解释:

  • -F'|':指定输入文本的分隔符为管道符|
  • BEGIN{OFS="|"}:设置输出文本的分隔符同样为|,确保输出格式和输入完全一致
  • $4 == "1-8" { $4 = "01-08" }:精准判断第四列内容为1-8时,将其替换为01-08
  • 最后的1:是awk的简化写法,代表打印所有行(不管该行是否被修改过)

方法二:用sed处理(正则匹配方式)

如果你更习惯sed的正则语法,可以使用这个命令:

sed -E 's/^([^|]*\|[^|]*\|[^|]*\|)1-8/\101-08/' input.txt > output.txt

命令细节解释:

  • -E:启用扩展正则表达式,让语法更简洁易读
  • ^([^|]*\|[^|]*\|[^|]*\|):捕获行首到第四列前的所有内容(包含前三个列及对应的管道符)
  • 1-8:匹配第四列中精确的1-8字符串
  • \101-08:将匹配到的内容替换为之前捕获的前缀加上01-08

效果验证

拿你提供的示例输入行来说:

CCSM01|CAM||1-8|NAP|CR|CLOSED|1
经过处理后会变成:
CCSM01|CAM||01-08|NAP|CR|CLOSED|1
完全符合你的期望输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:11:03