Linux下处理Terraform Providers输出:去除树形结构并提取唯一行
处理Terraform Providers树形输出提取唯一带版本条目
这里有几个实用的命令行组合,能快速帮你把terraform providers的树形输出转化为你需要的唯一带版本provider列表:
方法一:简洁匹配去重
直接用grep匹配带版本号的provider行,再通过sort -u去重:
terraform providers | grep -E 'provider\[.+\] [0-9]+\.[0-9]+\.[0-9]+' | sort -u
原理说明:
grep -E启用正则匹配,精准抓取包含provider[xxx]格式且后跟三段式版本号的行sort -u自动去除重复的行,只保留唯一条目
方法二:先清理树形符号再过滤
如果你想先彻底去掉所有树形结构的前缀符号,再提取目标行,可以用sed+grep+sort的组合:
terraform providers | sed -E '/^(├─|└─|│)/!d; s/^[├└│─ ]+//' | grep -E ' [0-9]+\.[0-9]+\.[0-9]+$' | sort -u
原理说明:
sed -E '/^(├─|└─|│)/!d:只保留以树形符号开头的行,过滤掉底部的Providers required by state:这类无关内容s/^[├└│─ ]+//:删掉行首所有的树形符号和空格,只保留provider本身的内容- 后续的
grep和sort -u和方法一作用一致,过滤带版本的行并去重
两种方法最终都会输出你需要的结果:
provider[xxx.com/edu/xxxvenafi] 1.2.0 provider[xxx.com/edu/xxxsmaas] 1.0.1
内容的提问来源于stack exchange,提问作者Simon
相关产品推荐
相关产品推荐

