如何使用Shell脚本高效处理大型csv文件,以获得比后续脚本更好的性能?

培育

我有一个input_file5列的大型csv文件我想对第二栏做两件事:

(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

awk -v q="'" 'BEGIN{FS=OFS=","} {$2=q substr($2,1,length($2)-1) q}1' input_file.dat

怎么运行的:

  • BEGIN{FS=OFS=","}:将输入和输出字段分隔符(FSOFS)设置为,
  • -v q="'":为变量分配文字单引号q(以避免在awk表达式中进行复杂的转义
  • {$2=q substr($2,1,length($2)-1) q}:将第二个字段($2)替换为单引号(q),然后替换第二个字段的值,且不带最后一个字符(substr(string, start, length)),并q在末尾附加一个文字单引号()。
  • 1:只需调用默认操作,即print当前(已编辑)行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Shell脚本中使用键值对处理文件

来自分类Dev

如何使用批处理脚本解析csv文件?

来自分类Dev

如何使用批处理脚本查找大型阶乘

来自分类Dev

如何使用批处理脚本查找大型阶乘

来自分类Dev

如何使用Shell脚本从文件获取URL

来自分类Dev

如何使用Shell脚本编辑文件

来自分类Dev

如何使用Shell脚本创建zip文件?

来自分类Dev

如何使用Shell脚本解析文件

来自分类Dev

如何使用Shell脚本从文件获取URL

来自分类Dev

如何使用shell脚本更新php文件

来自分类Dev

如何使用Shell脚本文件运行节点脚本

来自分类Dev

Bash 脚本 - 处理 CSV 文件

来自分类Dev

Shell脚本CSV处理-使用AWK添加新列

来自分类Dev

如何使用线程获得更好的pymongo性能?

来自分类Dev

如何使用Shell脚本将xlsx文件转换为csv文件?

来自分类Dev

如何测试Shell脚本的文件处理健壮性?

来自分类Dev

如何在Shell脚本中批处理文件?

来自分类Dev

如何使用PHP脚本转换CSV文件

来自分类Dev

如何使用Shell脚本处理文件中一行的空间?

来自分类Dev

如何使用Shell脚本处理文件中一行的空间?

来自分类Dev

使用脚本在批处理文件中运行django shell

来自分类Dev

使用批处理脚本,如何使用正则表达式拆分 .csv 文件中的数据?

来自分类Dev

使用Dask高效地读取大型csv文件

来自分类Dev

如何在CSV文件Shell脚本中删除String的结尾?

来自分类Dev

如何从 csv 文件中提取值到 Unix Shell 脚本

来自分类Dev

如何使用shell脚本重新格式化csv文件中的数据

来自分类Dev

使用Windows批处理脚本在CSV文件中添加列

来自分类Dev

如何使用多线程/多处理并行高效地运行python脚本?

来自分类Dev

使用 shell 脚本解析 csv 文件中的键值

Related 相关文章

热门标签

归档