Grep在S3文件夹中对文件进行排序

时间:2019-03-26 12:41:11

标签: grep aws-cli zcat

我想对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'

1 个答案:

答案 0 :(得分:1)

您可以指定要输出的字段并将其强制为纯文本:

aws s3api list-objects-v2 \
--bucket s3bucket \
--prefix location \
--query 'reverse(sort_by(Contents,&LastModified))[].[Key]' \
--output text

基本上,sort_byreverse输出Contents数组,这将提取Key元素。我将[Key]放在方括号中,以将每个结果强制放在自己的行上。