如何使用Linux命令提取S3路径指定区间的字符内容?
提取S3路径指定部分的Linux命令
你的需求是从S3路径中提取apyong/output/public这部分,原命令awk -F'/' '{print $NF}'只能输出最后一段(也就是文件名file3.gz.tar),所以不符合要求。下面是几种可行的解决方案:
方法1:用awk直接处理
echo "s3://my-dev-s3/apyong/output/public/file3.gz.tar" | awk -F'/' '{sub(/^s3:\/\/[^\/]+\//,""); sub(/\/[^\/]+$/,"")}1'
原理:
- 第一个
sub命令删除开头的s3://my-dev-s3/部分 - 第二个
sub命令删除结尾的/file3.gz.tar部分 - 最后的
1表示打印处理后的内容
方法2:用sed正则匹配
echo "s3://my-dev-s3/apyong/output/public/file3.gz.tar" | sed -E 's/^s3:\/\/[^\/]+\/(.*)\/[^\/]+$/\1/'
原理:
- 正则表达式匹配整个路径,捕获第一个非重复斜杠后、最后一个斜杠前的内容到分组
\1 - 替换整个字符串为捕获的分组内容
方法3:用Bash参数扩展(无需外部工具)
path="s3://my-dev-s3/apyong/output/public/file3.gz.tar" temp=${path#s3://*/} # 去掉开头的`s3://my-dev-s3/` result=${temp%/*} # 去掉结尾的`/file3.gz.tar` echo "$result"
原理:
${var#pattern}:删除变量开头匹配pattern的最短部分${var%pattern}:删除变量结尾匹配pattern的最短部分
内容的提问来源于stack exchange,提问作者AWS_Lernar
相关产品推荐
相关产品推荐

