我有一个包含以下数据的csv文件:
xyz/randomname-12ab-ab12-234234asdasd,1233.sdfsdf-sdfsdf,123123,10:10.0
abc/randomname-34ab-cd34-456456dfgdfg,4545,321321,10:10.0
我正在运行以下for循环:
for x in $(cat csv_file | awk -F ',' '{print $1}'); do
aws s3 ls s3://bucket/$x --human-readable --profile default | awk '{print $3" "$4" "$5}'
done
这给了我一个输出,比如:
12.2 MiB randomname-12ab-ab12-234234asdasd
30.1 MiB randomname-34ab-cd34-456456dfgdfg
我想要实现的是附加csv文件中的第二列加上第一列中的前导字符,以获得如下输出:
12.2 MiB randomname-12ab-ab12-234234asdasd 1233.sdfsdf-sdfsdf.xyz
30.1 MiB randomname-34ab-cd34-456456dfgdfg 4545.abc
编辑:aws s3 ls s3://bucket/ --human-readable --profile default
输出:
PRE xyz/
PRE abc/
2019-03-28 11:16:59 10.5 MiB randomname-1234
2019-01-14 11:53:47 90.2 MiB randomname-3456
randomname-12ab-ab12-234234asdasd
和randomname-34ab-cd34-456456dfgdfg
文件位于xyz和abc文件夹下。
发布于 2019-06-25 04:56:56
不要使用for
来读取文件。
该脚本从Bash循环中的csv文件中读取字段,并将它们传递到while
变量中,以便在输出中使用。存储桶名称被拆分,因此可以提取最后一部分。
while read -r bucket second_col
do
aws s3 ls s3://bucket/$x --human-readable --profile default | awk -v bucket=$bucket -v second_col=$second_col '{split(bucket, bucket_pre, "/"); print $3, $4, $5, second_col "." bucket_pre[2]}'
done < <(awk -F ',' '{print $1 $2}' csv_file)
我不知道csv文件中的第二个字段是什么,所以我创建了一个变量名(second_col
)。你应该用一个更有意义的词来代替。当提供虚拟数据时,很难给出好的答案,而且它的含义无法辨别,并且在问题中没有赋予它任何含义。
发布于 2019-06-25 16:01:11
这是一个全AWK版本。我不能访问亚马逊网络服务,所以我不得不创建bucket/...
树结构来进行测试。如果有效,请让我知道:
$ awk -F, '{ # separator for csv_file processing
cmd="ls -h -s bucket/" $1 # form the command, in aws probably:
# cmd="aws s3 ls s3://bucket/" $1 " --human-readable --profile default"
cmd | getline ret # execute command, get returned output
close(cmd) # close the cmd to save fds
split($1,tmp,"/") # getting the path
print ret,$2 "." tmp[1] # output
}' csv_file
带有路径和(touch
ed)文件bucket/abc/randomname-34ab-cd34-456456dfgdfg
和bucket/xyz/randomname-12ab-ab12-234234asdasd
的输出
0 bucket/xyz/randomname-12ab-ab12-234234asdasd 1233.sdfsdf-sdfsdf.xyz
0 bucket/abc/randomname-34ab-cd34-456456dfgdfg 4545.abc
https://stackoverflow.com/questions/56742810
复制相似问题