在每行上前两个字符拆分一个大的平面文件

scr*_*Owl 2 python regex bash awk sed

我有一个大文件~10 GB,以逗号分隔.每行以一个2字符代码开头,该代码告诉它是什么类型的行,因为每行是不同类型的事件.目前我将文件读入R,然后使用正则表达式将其拆分为基于代码的不同部分,然后将生成的对象写入平面文件.

我很好奇是否有更直接的方法来做这个(读取一行,确定行类型并将行附加到适当的平面文件(总共将有7个)),Python,bash,sed/awk等.

数据如下所示:

01,tim@bigcompany.com,20140101120000,campaign1
02,201420140101123000,123321,Xjq12090,TX
02,201420140101123000,123321,Xjq12090,AK
...
Run Code Online (Sandbox Code Playgroud)

任何建议,将不胜感激.

anu*_*ava 7

使用awk你可以做到:

awk -F, '{fn=$1 ".txt"; print > fn}' file
Run Code Online (Sandbox Code Playgroud)

如果要通过最终关闭所有文件句柄来保持清洁,请使用以下命令awk:

awk -F, '!($1 in files){files[$1]=$1 ".txt"} {print > files[$1]}
    END {for (f in files) close(files[$f])}' file
Run Code Online (Sandbox Code Playgroud)