Command-Line
帶有特殊字元的 AWS s3 CLi grep 命令
如果存在以下行,我想複製儲存在 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.