如何使用awk处理和保存数据块?

时间:2016-10-05 09:23:42

标签: bash awk dataframe

让我们说我打开一个大的(几GB)文件,我无法在整个文件中读取一次。

如果它是csv文件,我们会使用:

for chunk in pd.read_csv('path/filename', chunksize=10**7):
    # save chunk to disk

或者我们可以用熊猫做类似的事情:

import pandas as pd
with open(fn) as file:
    for line in file:
        # save line to disk, e.g. df=pd.concat([df, line_data]), then save the df

一个" chunk" awk脚本的数据? Awk会将文本解析/处理成您想要的格式,但我不知道如何" chunk"用awk。可以编写脚本script1.awk然后处理您的数据,但这会立即处理整个文件。

相关问题,更具体的例子:How to preprocess and load a "big data" tsv file into a python dataframe?

1 个答案:

答案 0 :(得分:1)

awk一次按设计读取单个记录(块)。默认情况下,记录是数据行,但您可以使用RS (记录分隔符)变量指定记录。在读取下一个代码块之前,有条件地在当前记录上执行每个代码块:

$ awk '/pattern/{print "MATCHED", $0 > "output"}' file

以上脚本将一次从输入文件中读取一行,如果该行与pattern匹配,则会在读取下一行之前将该行保存在MATCHED前面的文件输出中。