Command-Line

帶有特殊字元的 AWS s3 CLi grep 命令

  • September 2, 2019

如果存在以下行,我想複製儲存在 AWS S3 儲存桶中的整個日誌:

\"Key\" : 951332,\n

我試過這樣逃避:

aws s3 ls s3://bucket_name | grep "/\"Key/\" : 951332,/\n" --recursive

但沒有得到任何回報,有人知道我如何以這種方式執行 grep 嗎?

使用 掛載 S3 s3fs,然後執行..:

grep -r Key /PATH/TO/MOUNT/POINT/

…然後通過管道grep 951332檢查它是否足以滿足您的情況。

如果您在遠離 AWS 的本地執行此程序,則可能需要一段時間並產生 AWS DataTransfer 費用,因此您最好從同一 VPC 中的 EC2 實例執行此程序

如果您仍然大膽地使用這種方法從 AWS 本地執行,即使它的成本,您可能希望將 stdout 和 stderr 重定向到某些文件,以便在必要時稍後檢查它們,而不是再次執行昂貴的命令行。

總結一下,我可能會選擇:

grep -r Key /PATH/TO/MOUNT/POINT/ | \
       grep 951332 \
       >/LOCAL/PATH/TO/grep_stdout \
       2>/LOCAL/PATH/TO/grep_stderr
#   In /LOCAL/PATH/TO/grep_stdout should be the paths to the docs you
# were searching.

或者:

grep -r Key /PATH/TO/MOUNT/POINT/ | \
       grep 951332 &>/LOCAL/PATH/TO/all_grep_outputs
#   In /LOCAL/PATH/TO/all_grep_outputs should be the paths to the docs you
# were searching.

引用自:https://unix.stackexchange.com/questions/538694