使用 csv 每行的特定值作为命令路径参数

问题描述 投票:0回答:1

不知道为什么我在任何地方都找不到这个答案。

输入 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 等)将是首选。

bash awk sed grep xargs
1个回答
0
投票

如果你想将第2列和第12列作为文件名

awk -F, '{print "s3://bucket1/prefix1/2019/" $2 " s3://bucket1/prefix2/2019/" $2}' ~/tmp/so/ffff | xargs -tL1 aws s3 cp
© www.soinside.com 2019 - 2024. All rights reserved.