小编use*_*102的帖子

当 awk 太慢时,基于字段拆分大文件的最佳方法

我在处理巨大的 .gz 文件(大于 500G)时遇到问题。我的目标是通过这些文件中的第 4 个字段拆分这些文件中的每一个。我以前用过这个漂亮的 awk one-liner 来做到这一点:

zcat file.txt.gz | awk 'NR>1{print >  $4}'
Run Code Online (Sandbox Code Playgroud)

但不幸的是,这需要很长时间才能处理大文件,所以我试图首先按大小拆分它们,然后在按字段拆分后连接每个文件。我可以使用以下方法拆分它们:

i=file.txt.gz
dir=$i
mkdir -p $dir
cd $dir
split -b 200M ../$i $i

for file in `ls *`; do zcat $file | awk 'NR>1{print >  $4}'; done
Run Code Online (Sandbox Code Playgroud)

但是我如何通过第 4 个字段连接所有正确的文件?另外,真的没有更好的方法来做到这一点吗?当我使用这样的 gz 文件拆分时,我也遇到了一个错误,比如“文件意外结束”,所以我想我的拆分也是错误的,但我不确定我是否朝着正确的方向前进,如果你有建议会很有帮助。

非常感谢你的帮忙!弗拉

large-files awk gzip text-processing split

5
推荐指数
1
解决办法
1168
查看次数

标签 统计

awk ×1

gzip ×1

large-files ×1

split ×1

text-processing ×1