不知道为什么我在任何地方都找不到这个答案。
输入 CSV:
201800001779830000,"17798320181.pdf",,,159.0,5371.0,,,,,,2018,"{}",2022-08-25 12:58:20.928,2022-08-26 03:13:35.292,airflow,false,"2018-13-FILE-0000177983"
201800002481440000,"24814420181.pdf",,,180.0,7085.0,,,,,,2018,"{}",2022-08-25 12:57:08.403,2022-08-26 03:13:35.292,airflow,false,"2018-13-FILE-0000248144"
201900000058720000,"587220191.pdf",,,29.0,1361.0,,,,,,2019,"{}",2022-08-25 13:09:28.255,2022-08-26 03:13:35.292,airflow,false,"2019-13-FILE-0000005872"
想要将每一行作为单独的命令运行,并将某些列作为路径值的输入,从而产生以下命令
aws s3 cp s3://bucket1/prefix1/2019/17798320181.pdf s3://bucket1/prefix2/2019/24814420181.pdf
aws s3 cp s3://bucket1/prefix1/2019/17798320181.pdf s3://bucket1/prefix2/2019/24814420181.pdf
...
(因此使用第 2 列和第 12 列作为路径的输入)。 每行都应该运行命令而不是打印出来。 谢谢!
编辑:如果这可以作为单行代码完成(使用 awk、sed 等)将是首选。
如果你想将第2列和第12列作为文件名
awk -F, '{print "s3://bucket1/prefix1/2019/" $2 " s3://bucket1/prefix2/2019/" $2}' ~/tmp/so/ffff | xargs -tL1 aws s3 cp