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

如何使用awk修改CSV指定列后将输出重定向保存到原文件

问题原因

你执行的命令会清空原文件是因为Shell的重定向操作>会在命令启动前先截断清空目标文件,等到awk命令开始读取a.csv的时候,文件已经是空的了,自然没有内容输出。

正确实现方案

两种常用方案可实现需求:

  • GNU Awk(大部分Linux系统默认预装的awk版本)支持原地修改参数,直接添加-i inplace选项即可:
    awk -i inplace 'BEGIN{FS=OFS=","} {$19 = $1} 1' a.csv
    
  • 全平台通用方案:先写入临时文件,确认执行成功后再替换原文件,避免意外数据丢失:
    awk 'BEGIN{FS=OFS=","} {$19 = $1} 1' a.csv > a.csv.tmp && mv a.csv.tmp a.csv
    
注意事项

如果你的CSV包含带逗号、换行的引号包裹字段,单纯按,分割字段的逻辑会出错,需要用专门处理CSV的工具处理,如果你当前的命令已经能正确输出处理结果,说明你的CSV为无特殊字符的简单格式,直接用上述方案即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 02:30:01