gpt4 book ai didi

bash - awk 基于过滤器输出到文件

转载 作者:行者123 更新时间:2023-12-05 09:07:46 25 4
gpt4 key购买 nike

我有一个很大的 CSV 文件,我需要根据其中一列中的值将其分成不同的部分。我的输入文件 dataset.csv 是这样的:

注意:编辑以阐明数据是 ,data, 没有空格。

action,action_type, Result
up,1,stringA
down,1,strinB
left,2,stringC

因此,要按 action_type 拆分,我只需这样做(我需要结果文件中的整个匹配行):

awk -F, '$2 ~ /^1$/ {print}' dataset.csv >> 1_dataset.csv
awk -F, '$2 ~ /^2$/ {print}' dataset.csv >> 2_dataset.csv

这按预期工作,但我基本上遍历了我的原始数据集两次。我的原始数据集约为 5GB,我有 30 个 action_type 类别。我每天都需要这样做,所以,我需要编写脚本让它自己高效运行。

我尝试了以下但它不起作用:

# This is a file called myFilter.awk

{
action_type=$2;
if (action_type=="1") print $0 >> 1_dataset.csv;
else if (action_type=="2") print $0 >> 2_dataset.csv;
}

然后我运行它:

awk -f myFilter.awk dataset.csv

但我一无所获。几乎没有,甚至没有错误。哪一种告诉我我的代码根本不匹配任何东西或者我的打印/管道语句是错误的。

最佳答案

你可以试试这个 awk 在一个命令中完成这个:

awk -F, 'NR > 1{fn = $2 "_dataset.csv"; print >> fn; close(fn)}' file

关于bash - awk 基于过滤器输出到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64453347/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com