Grep отсортированные файлы в папке S3 - PullRequest
0 голосов
/ 26 марта 2019

Я хочу отсортировать файлы в папках S3, а затем проверить, содержат ли файлы определенную строку.

Когда я обычно хочу выполнить поиск по файлу, я делаю следующее:

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 Ответ

1 голос
/ 27 марта 2019

Вы можете указать, какие поля выводить, и принудительно вводить их только в текст:

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

В основном sort_by и reverse выводят массив Contents, и это извлекает Key элемент.Я поставил [Key] в квадратных скобках, чтобы вывести каждый результат в отдельную строку.

...