我试图分别用%03ld或%04ld之类的模式替换文件名中包含n位数字的数字(取决于数字的数量)。
例如:
"img/img_000.png"
-> "img/img_%03ld.png"
"RA20190201_A/img_1030.tif"
-> "RA20190201_A/img_%04ld.tif"
".../SomeImage_z004.tif"
-> ".../SomeImage_z%03ld.tif"
如你看到的
0
仅由s组成我认为使用python(或其他语言)可以很容易地做到这一点,但我正在尝试通过使用Linux内置工具(例如awk
或sed
使用管道)的单线实现。
我能够使用awk
s函数计算数字gsub
:
> echo "9001_bla/img_0001.png" | awk '{print gsub(/[0-9]/, "")}'
8
但是我没有设法隔离相关部分的计数并执行实际的替换。
我该如何实现?
一种在awk中执行的方法
awk 'BEGIN {
FS=OFS="."
}
match($(NF-1),/[0-9]+$/) {
$(NF-1)=(substr($(NF-1),1,RSTART-1) "%0" RLENGTH "ld")
} 1'
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句