【发布时间】:2017-05-10 20:34:48
【问题描述】:
gawk -v ff=${fileB} '
/^1017/ { print $0 >> ff; next; }
!(/^#/||/^1016/||/^1018/||/^1013/||/^1014/||/^1013/||/^1014/) {
f=substr($0,11,2)".csv"; print $0 >>"../../" f;
}
' ${csvfiles}
大文件包含各种2000万行。如果它以1017开头,我们必须读取每一行,它将打印在fileB中,而与行内容无关
如果它不是从上面的跳过列表开始(1016,1013..),它将被写入文件,其中文件名取自行内容。例如这条线
1010,abcdefg,123453,343,3434, 写在 fg.csv 中。我们做子串并从第二列中取出 fg。
问题是性能就像每秒 35k 行。有没有可能让它更快?
sample input
Exclusion List 1016 1013 ..
Include line number 1010,1017...
1016,abcdefg,123453,343,3434,
1010,abcdefg,123453,343,3434,
1017,sdfghhj,123453,343,3434,
1034,zxczcvf,123453,343,3434,
1055,zxczcfg,123453,343,3434,
sample output
fileB.csv
1017,sdfghhj,123453,343,3434,
fg.csv
055,zxczcfg,123453,343,3434,
vf.csv
1034,zxczcvf,123453,343,3434,
【问题讨论】:
-
拆分大文件,并行运行块,
cat将结果合并到一个文件中。 -
edit 您的问题并使用编辑器的
{}按钮来格式化您的示例输入/输出。还要具体说明您要排除哪些数字,并确保您的示例输入/输出和代码反映了这一点。
标签: performance awk cpu gawk