【发布时间】:2017-03-02 10:49:00
【问题描述】:
以下是示例数据。请注意,需要对具有数百万条记录的文件执行此操作,因此我需要最佳方法。本质上,我们希望通过连接第 4 列的前两个字符并排除第 2 列的前 3 个字段('_' 分隔)来更新第 2 列。
我一直在尝试使用 cut 并逐行读取文件,这非常耗时。我需要 awk 之类的东西
awk -F, '{print $1","substr($4,1,2)"_"cut -f4-6 -d'_'($2)","$3","$4","$5","$6}'
输入数据:
234234234,123_33_3_11111_asdf_asadfas,01,06_1234,4325325432,2
234234234,123_11_2_234111_aadsvfcvxf_anfews,01,07_4444,423425432,2
234234234,123_33_3_11111_mlkvffdg_mlkfgufks,01,08_2342,436876532,2
234234234,123_33_3_11111_qewf_mkhsdf,01,09_68645,43234532,2
输出为:
234234234,06_11111_asdf_asadfas,01,06_1234,4325325432,2
234234234,07_234111_aadsvfcvxf_anfews,01,07_4444,423425432,2
234234234,08_11111_mlkvffdg_mlkfgufks,01,08_2342,436876532,2
234234234,09_11111_qewf_mkhsdf,01,09_68645,43234532,2
【问题讨论】:
-
请根据您的尝试编辑您的问题,以及有关问题所在的任何详细信息。评论部分不适合此类信息。
-
另外,您确定
awk与 Python 之类的脚本解决方案相比会特别有效吗? -
我更喜欢 awk,因为我们在需要转换此数据的服务器中没有 python。请注意,需要此转换的最大文件为 75 Gb