【发布时间】:2015-06-24 12:11:41
【问题描述】:
我有一个包含 5 列的大型 csv 文件 input_file。我想对第二列做两件事:
(1) 删除最后一个字符 (2) 附加前导和尾随单引号
以下是来自input_file.dat 的示例行
420374,2014-04-06T18:44:58.314Z,214537888,12462,1
420374,2014-04-06T18:44:58.325Z,214537850,10471,1
281626,2014-04-06T09:40:13.032Z,214535653,1883,1
示例输出如下所示:
420374,'2014-04-06T18:44:58.314',214537888,12462,1
420374,'2014-04-06T18:44:58.325',214537850,10471,1
281626,'2014-04-06T09:40:13.032',214535653,1883,1
我已经编写了以下代码来做同样的事情。
#!/bin/sh
inputfilename=input_file.dat
outputfilename=output_file.dat
count=1
while read line
do
echo $count
count=$((count + 1))
v1=$(echo $line | cut -d ',' -f1)
v2=$(echo $line | cut -d ',' -f2)
v3=$(echo $line | cut -d ',' -f3)
v4=$(echo $line | cut -d ',' -f4)
v5=$(echo $line | cut -d ',' -f5)
v2len=${#v2}
v2len=$((v2len -1))
newv2=${v2:0:$v2len}
newv2="'$newv2'"
row=$v1,$newv2,$v3,$v4,$v5
echo $row >> $outputfilename
done < $inputfilename
但这需要很多时间。
有没有有效的方法来实现这一点?
【问题讨论】:
-
使用 awk 或 sed 进行此类工作。