您好,我正在尝试用另一个bash变量替换此代码
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/,但仍然没有成功。
输入:
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所需输出:
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: 2BASH变量:
shell_variable=0.2.3
shell_variable2=Backendapp尝试在此处使用~选项:
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感谢您的建议
发布于 2018-08-09 23:20:00
你所拥有的似乎是有效的。也许你包含了太多的正则表达式信息?
(pi4 525) $ match="l"
(pi4 526) $ (echo alpha;echo beta;echo gamma;echo delta) | awk -v var="$match" '$0 ~ var'
alpha
deltahttps://stackoverflow.com/questions/51770547
复制相似问题