如何使用Shell脚本在CSV文件每行首列插入projectid值
实现方法
你可以在循环内对gcloud的输出做一次预处理,把当前遍历的$projectid插入到每行的开头,修改后的完整代码如下:
# 先清空旧的结果文件,避免追加重复内容,不需要可删除 > temp_iam.csv for projectid in `gcloud scc assets list <someorgID> \ --filter="security_center_properties.resource_type=\"google.cloud.resourcemanager.Project\"" \ --format="get(asset["securityCenterProperties"]["resourceDisplayName"])"` do gcloud recommender recommendations list \ --location=global \ --recommender=google.iam.policy.Recommender \ --project=$projectid \ --format="csv[no-heading](content["overview"], content["operationGroups"])" | \ # 用awk插入projectid到行首,同时处理多余的空白符 awk -v pid="$projectid" '{gsub(/\s*,\s*/, ", "); print pid ", " $0}' >> temp_iam.csv done
注意:请将代码中的
<someorgID>替换为你实际的GCP组织ID。
改动说明
- 修复了原命令中
-- format的笔误,去掉了参数名中间多余的空格 - 新增了awk预处理逻辑:通过
-v pid="$projectid"将shell层的项目ID变量传入awk,每一行输出时将项目ID放在最前面 - 用
gsub处理了原输出中两列之间多余的制表符、空格,统一为,分隔,和你需要的目标格式对齐
内容的提问来源于stack exchange,提问作者ajit singh
相关产品推荐
相关产品推荐

