如何用Perl将字符串数字范围转为带指定前缀的格式化序列?
解决数字范围生成格式化序列的问题
你遇到的问题根源在于原命令没有统一处理所有数字的格式化:第一个数字直接输出未加前缀,且所有数字都硬加了前导0,导致两位数出现多余的0前缀。
可以用以下Perl命令实现需求:
range=1-15 echo "$range" | perl -pe 's/(\d+)-(\d+)/join(" ", map { sprintf("Scenario_%02d", $_) } $1..$2)/eg'
命令说明:
map { sprintf("Scenario_%02d", $_) } $1..$2:遍历从起始数字到结束数字的每一个值,用sprintf("%02d", $_)将数字格式化为两位固定长度(不足两位补前导0),再拼接Scenario_前缀。join(" ", ...):将所有格式化后的字符串用空格连接起来,替换原有的数字范围字符串。
执行后会得到符合预期的输出:
Scenario_01 Scenario_02 Scenario_03 Scenario_04 Scenario_05 Scenario_06 Scenario_07 Scenario_08 Scenario_09 Scenario_10 Scenario_11 Scenario_12 Scenario_13 Scenario_14 Scenario_15
内容的提问来源于stack exchange,提问作者jayar
相关产品推荐
相关产品推荐

