我有一个需要检查输入值的要求,以便它遵循固定的模式,否则,请使用= 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
但是我不能再走了。
答案 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