使用sed检查并替换字母数字模式

时间:2018-11-24 00:51:39

标签: bash sed

我有一个需要检查输入值的要求,以便它遵循固定的模式,否则,请使用= 0))将其固定为该模式。

最终输出仅需采用sed格式,其中XX为01到49

我可能希望输入ENV00XX,Env00XX,env1 env2 ... env9或某些其他条件需要将env0001重置为env0049(小写的env和4位数字,最多49位)

我尝试了许多最接近的方法 env00XX给我3代表0003,给23给0023

sed -r ":r;s/\b[0-9]{1,3}\b/0&/g;tr"也使我从ENV001到env1

但是我不能再走了。

1 个答案:

答案 0 :(得分:0)

尝试一下:

echo 'EnV009' | sed 's/env\([0-9]\{1,\}\)/env000\1/I;s/0*\([0-9]\{4\}\)/\1/'

说明:第一个sed表达式s/\(env\)\([0-9]\{1,\}\)/env000\2/I不区分大小写地搜索“ env”,后跟至少一个数字。然后用“ env”替换匹配的文本,后跟三个零,然后是匹配的数字模式(一个或多个数字)。

EnV009变为env000009

第二个sed表达式s/0*\([0-9]\{4\}\)/\1/获取第一个sed表达式的输出,并在最后四位数字前切掉多余的零。

env000009变为env0009