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

awk字段分隔符问题:提取最后一个字段时输出异常

问题原因与解决办法

原因分析

问题根源是你的CSV文件使用了Windows风格的换行符\r\n,而非Linux/Unix系统默认的\n。

当用awk提取第5个字段时,该字段末尾带有隐藏的\r(回车符)。输出时,\r会强制光标跳回当前行开头,后续的右括号)就会覆盖掉insert的第一个字符i,于是出现了)nsert的异常显示。

解决办法

1. 将文件转换为Unix格式

用dos2unix直接转换:

dos2unix EURUSD.csv

如果没有dos2unix,用sed也能实现:

sed -i 's/\r$//' EURUSD.csv

2. 在脚本中处理换行符

修改提取CLOSE字段的awk命令,去掉末尾的\r:

CLOSE=`echo $line | awk -F, '{ sub(/\r$/, "", $5); print $5 }' `

3. 用awk一次性完成所有操作(更高效)

原脚本多次调用awk效率较低,直接用awk就能从头到尾处理,同时解决换行符问题:

#!/bin/bash
awk -F, 'NR>1 { sub(/\r$/, "", $5); printf "insert into forex (%s, %s, %s, %s, %s)\n", $1, $2, $3, $4, $5 }' EURUSD.csv

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 12:45:35