我正在尝试获取目录中文件的完整路径。到目前为止,这就是我在bash中所拥有的。
prefix="s3://${s3_bucket}/${s3_folder}/$(date --date="$i days ago" +"%Y/%m/%d")/"
#echo $prefix
aws s3 ls s3://${s3_bucket}/${s3_folder}/$(date --date="$i days ago" +"%Y/%m/%d")/ | sed -n 's/.*\([0-9][0-9]-h.*gz\)/\1/p' | awk '$0="${prefix}"$0' >> ${s3_files_1}
在我的输出中,我得到以下内容:
${prefix}file1.gz
${prefix}file2.gz
我正在寻找的输出如下所示。
s3://my_bucket/my_folder/file1.gz
s3://my_bucket/my_folder/file2.gz
我的问题是awk命令解释变量$ {prefix}的方式。有人可以帮忙吗?
答案 0 :(得分:4)
您可以使用-v
将shell变量内容传递给awk:
prefix="s3://my_bucket/my_folder/"
echo "file1.gz" | awk -v myprefix="${prefix//\\/\\\\}" '{ print myprefix $0 }'
可悲的是,awk -v
不是数据安全的。此示例使用参数扩展来转义反斜杠以避免它们被损坏。