【发布时间】:2018-08-28 14:55:58
【问题描述】:
关注这个问题Splitting out a large file。
我想从包含大型 gzip 压缩文件的 Amazon s3:// 存储桶中传输调用,并使用 awk 命令处理它们。
要处理的示例文件
...
{"captureTime": "1534303617.738","ua": "..."}
...
要优化的脚本
aws s3 cp s3://path/to/file.gz - \
| gzip -d \
| awk -F'"' '{date=strftime("%Y%m%d%H",$4); print > "splitted."date }'
gzip splitted.*
# make some visual checks here before copying to S3
aws s3 cp splitted.*.gz s3://path/to/splitted/
您认为我可以将所有内容包装在同一管道中以避免在本地写入文件吗?
我可以使用 Using gzip to compress files to transfer with aws command 来进行 gzip 和即时复制,但是在 awk 中进行 gzip 会很棒。
谢谢。
【问题讨论】:
-
我是否理解正确,您希望在不创建单个临时文件的情况下完成所有这些处理? IE。没有
splitted.YYYYMMDDHH? -
gzip splitted.*行似乎需要时间和空间。也许我可以在 awk 中print和gzip,而不用直接写splitted.YYYYMMDDHH但splitted.YYYYMMDDHH.gzip。 -
成本来自于编写临时解压文件。
-
你还没有告诉我们
# make some visual checks here before copying to S3是什么意思。您是在目视检查splitted.YYYYMMDDHH或splitted.YYYYMMDDHH.gzip文件中的内容还是其他内容? -
只是纳闷,怎么又打开了。我认为这是重复的:stackoverflow.com/questions/21698296/…