【发布时间】:2017-11-03 21:48:18
【问题描述】:
我尝试使用下面的代码,但 csv 文件有超过 8000 万行(大约 25gb),并且一些特殊字符似乎会破坏 echo 命令。 csv 有 2 列,用逗号分隔。 例如:
blah, blah2
data1,data2
line3,fd$$#$%T%^Y%&$$B
somedata,%^&%^&%^&^
目标是获取第二列,base64 是准备导入 sql 数据库。我正在第二列上进行 base64 编码,因此支持 unicode 等,并且没有字符会损坏数据库。 我正在寻找一种不会破坏特殊字符等的更有效的方法。
awk -F "," '
{
"echo "$2" | base64" | getline x
print $1, x
}
' OFS=',' input.csv > base64.csv
错误:
sh: 1: Syntax error: word unexpected (expecting ")") :
not foundrf :
not found201054 :
not foundth :
not foundz09
| base64' (Too many open files)ut.csv FNR=1078) fatal: cannot open pipe `echo q1w2e3r4
【问题讨论】:
-
我发现的另一个问题是第二列也可能在数据中包含逗号。无论如何要解决这个问题?