将前导零添加到awk变量

mir*_*rix 18 variables bash awk pad zero

我在bash的"for"循环中有以下awk命令:

awk -v pdb="$pdb" 'BEGIN {file = 1; filename = pdb"_" file ".pdb"}
 /ENDMDL/ {getline; file ++; filename = pdb"_" file ".pdb"}
 {print $0 > filename}' < ${pdb}.pdb 
Run Code Online (Sandbox Code Playgroud)

这将读取一系列名为$ pdb.pdb的文件,并将它们拆分为名为$ pdb_1.pdb,$ pdb_2.pdb,...,$ pdb_21.pdb等的文件.但是,我想生成带有名称的文件比如$ pdb_01.pdb,$ pdb_02.pdb,...,$ pdb_21.pdb,即将填充零添加到"file"变量.

我尝试过以不同的方式使用printf但没有成功.非常感谢帮助.

glg*_*lgl 28

file输出替换输出sprintf("%02d", file).

甚至整个配偶filename = sprintf("%s_%02d.pdb", pdb, file);.


JJ.*_*JJ. 26

以下是如何使用以下方法创建前导零awk:

# echo 1 | awk '{ printf("%02d\n", $1) }'
01
# echo 21 | awk '{ printf("%02d\n", $1) }'
21
Run Code Online (Sandbox Code Playgroud)

替换%02为您需要的总位数(包括零).