首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在awk搜索中使用bash变量

在awk搜索中使用bash变量
EN

Stack Overflow用户
提问于 2018-08-09 23:12:41
回答 1查看 80关注 0票数 0

您好,我正在尝试用另一个bash变量替换此代码

代码语言:javascript
复制
   awk -v val_shell="$shell_variable" -v name="$shell_variable2" '
/:$/{
  flag=""
}
/Backendapp/{
  flag=1
}
flag && NF && (/ImageTag:/){
  match($0,/^[[:space:]]+/);
  val=substr($0,RSTART,RLENGTH);
  $NF=val_shell;
  print val $0;
  next
}
1
'   Input_file

如何从bash添加另一个变量来替换'Backendapp'?我尝试了$0 ~ name,而不是/Backendapp/,但仍然没有成功。

输入:

代码语言:javascript
复制
Backendapp:
  Name: spring-rest 
  Image: "testuser/backend"
  ImageTag: "latest"
  ImagePullPolicy: "Always"
  Port: 8080
  replicaCount: 2

Frontendapp:
  Name: spring-js
  Image: "testuser/frontend"
  ImageTag: "latest"
  ImagePullPolicy: "Always"
  replicaCount: 2

所需输出:

代码语言:javascript
复制
Backendapp:
  Name: spring-rest 
  Image: "testuser/backend"
  ImageTag: "0.2.3"
  ImagePullPolicy: "Always"
  Port: 8080
  replicaCount: 2

Frontendapp:
  Name: spring-js
  Image: "testuser/frontend"
  ImageTag: "latest"
  ImagePullPolicy: "Always"
  replicaCount: 2

BASH变量:

代码语言:javascript
复制
shell_variable=0.2.3
shell_variable2=Backendapp

尝试在此处使用~选项:

代码语言:javascript
复制
  awk -v val_shell="$shell_variable" -v name="$shell_variable2" '
/:$/{
  flag=""
}
$0 ~ name {
  flag=1
}
flag && NF && (/ImageTag:/){
  match($0,/^[[:space:]]+/);
  val=substr($0,RSTART,RLENGTH);
  $NF=val_shell;
  print val $0;
  next
}
1
'   Input_file

感谢您的建议

EN

回答 1

Stack Overflow用户

发布于 2018-08-09 23:20:00

你所拥有的似乎是有效的。也许你包含了太多的正则表达式信息?

代码语言:javascript
复制
(pi4 525) $ match="l"
(pi4 526) $ (echo alpha;echo beta;echo gamma;echo delta) | awk -v var="$match" '$0 ~ var'
alpha
delta
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51770547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档