如何用gsutil提取大.tsv.bgz文件的前n行(无需全解压)
提取GCS上大型无索引.tsv.bgz文件的前n行(无需完整解压)
直接用管道命令组合就能实现,全程流式处理,无需下载或完整解压整个大文件:
gsutil cat gs://your-bucket/path/to/target-file.tsv.bgz | zcat | head -n [你需要的行数] > local-output.tsv
各命令作用说明:
gsutil cat:从Google Cloud Storage(GCS)流式读取目标文件的内容,不会把完整文件下载到本地zcat:流式解压块压缩(bgz)的内容,若系统不支持zcat,替换成gzip -dc即可实现同样效果head -n [n]:截取前n行数据,把[n]替换成你实际需要的行数(比如100)> local-output.tsv:将截取结果保存到本地的文本文件中
额外提示:
- 因为原文件没有索引,这种方式会从文件开头逐块读取解压,直到获取到指定行数就停止,不会处理整个大文件,效率很高
- 如果目标文件第一行是表头,需要单独提取表头或跳过表头的话,可以调整命令:
- 只取表头:
gsutil cat gs://your-bucket/path/to/target-file.tsv.bgz | zcat | head -n 1 - 跳过表头取前n行数据:
gsutil cat gs://your-bucket/path/to/target-file.tsv.bgz | zcat | head -n $((n+1)) | tail -n $n
- 只取表头:
- 确保你的本地环境已经安装并配置好
gsutil,拥有目标GCS文件的读取权限
内容的提问来源于stack exchange,提问作者Xunzhi Zhang
相关产品推荐
相关产品推荐

