继续这个: Matching a pattern with sed and getting an integer out at the same time
从xml文件中的模式中获取数字后,我有一个var_number=some number
,
var_number=6
。
在同一个xml文件中,开发人员应该输入以下行:
NewC_server_list=C_SME_DEV6,C_WEB_DEV6
我需要验证=之后的模式是C_SME_DEV $ {var_number},C_WEB_DEV $ {var_number}
含义两件事:
sed还是awk?我担心的是:更短的脚本和速度(这台机器上的CPU分配很低)
答案 0 :(得分:1)
假设您之前命令中的号码存储在变量myVar
中,您可以在perl
中执行此类操作。
您也可以直接从命令行运行命令。
#!/bin/bash
myVar=$(perl -nle 'print $1 if /ENV=DEV.*?(\d+)/' file) # stored from your previous question.
# myVar=6 (The value from your previous question)
if (( myVar == $(perl -nle 'print $1 if /.*=C_SME_DEV.*?(\d+)/' file) )) && \
(( myVar == $(perl -nle 'print $1 if /.*,C_WEB_DEV.*?(\d+)/' file) )); then
echo "Match found"
fi
答案 1 :(得分:1)
添加我之前对OP上一个问题的回答,该问题与上述问题有关。测试文件:
$ cat file
#Env=DEV2,DEV3,DEV5,DEV6
#Enter your required DEV environment after the ENV= in the next line.
Env=DEV6
NewC_server_list=C_SME_DEV6,C_WEB_DEV6
解决方案:
$ awk 'sub(/^Env=DEV/,"") && /^[1-9][0-9]?$/ {a=$0;b="NewC_server_list=C_SME_DEV" $0 ",C_WEB_DEV" $0} $0==b {print a}' file
6
由于缺乏更好的知识,它只支持每个文件1个匹配,假设旧的需求数据存在。