我想对 S3 文件夹中的文件进行排序,然后检查文件是否包含某个字符串。
当我通常想要 grep 文件时,我会执行以下操作:
aws s3 cp s3://s3bucket/location/file.csv.gz - | zcat | grep 'string_to_find'
我看到我可以像这样对文件进行排序:
aws s3api list-objects-v2
--bucket s3bucket
--prefix location
--query 'reverse(sort_by(Contents,&LastModified))'
到目前为止尝试了这样的事情,但管道坏了:
aws s3api list-objects-v2
--bucket s3bucket
--prefix location
--query 'reverse(sort_by(Contents,&LastModified))' | cp - | zcat | grep 'string_to_find'
您可以指定要输出的字段并强制它们为纯文本:
aws s3api list-objects-v2
--bucket s3bucket
--prefix location
--query 'reverse(sort_by(Contents,&LastModified))[].[Key]'
--output text
基本上,sort_by
和reverse
输出Contents
数组,这会提取Key
元素。我把[Key]
放在方括号里,以强制每个结果放在自己的行上。