我有名称为“words_transfer1_morewords.txt”的文件。我希望确保“传输”之后的数字是五位数字,如“words_transfer00001_morewords.txt”中所示。我将如何使用ksh脚本来做到这一点?谢谢。shell脚本在文件名中间添加前导零
1
A
回答
2
这将在任何Bourne类型/ POSIX壳工作,只要你话和morewords不包含数字:
file=words_transfer1_morewords.txt
prefix=${file%%[0-9]*} # words_transfer
suffix=${file##*[0-9]} # _morewords.txt
num=${file#$prefix} # 1_morewords.txt
num=${num%$suffix} # 1
file=$(printf "%s%05d%s" "$prefix" "$num" "$suffix")
echo "$file"
0
使用ksh
的正则表达式匹配操作,打破文件名分成不同的部分,格式化数字后又将它们重新组合在一起。
pre="[^[:digit:]]+" # What to match before the number
num="[[:digit:]]+" # The number to match
post=".*" # What to match after the number
[[ $file =~ ($pre)($num)($post) ]]
new_file=$(printf "%s%05d%s\n" "${.sh.match[@]:1:3}")
在成功匹配=~
,特殊的阵列参数.sh.match
包含元素0的全场比赛,并以起始元素中的每个捕获组1
相关问题
- 1. Linux shell脚本将前导零添加到文件名
- 2. 将前导零添加到文件名
- 3. 在shell脚本中的文件名前加上日期
- 4. 如何在unix中的shell脚本中附加文件之前添加条件?
- 5. 在文件上添加扩展名的Shell脚本
- 6. 在文件名的末尾添加连续数字 - Shell脚本
- 7. 在bash脚本添加前导零到浮点数
- 8. Shell脚本添加base_url到php文件
- 9. 添加前导零日期时间C#
- 10. 使用PowerShell将前导零添加到文件名字符串
- 11. Applescript将前导零添加到文件名,如何?
- 12. 更换和添加前导零重命名文件
- 13. 如何添加前导零到顺序文件名
- 14. 在文件名中加上两位前导零
- 15. shell在文件中间添加多行
- 16. UNIX C Shell脚本。复制文件和添加扩展名
- 17. 将前导零添加到此JavaScript倒计时脚本?
- 18. Padleft不添加前导零
- 19. 用javascript添加前导零?
- 20. 将文件名添加到粘贴文本上方的shell脚本中的附加文本文件
- 21. 添加条件前导或尾随零
- 22. 将脚本添加到文件的shell脚本
- 23. Shell脚本并在分隔文件中添加大值
- 24. 在shell脚本中添加计数器
- 25. 在git中转义在文件名中添加一个前导“ - ”?
- 26. 在shell脚本中删除引号并将文件扩展名添加到文件名中
- 27. 配置文件的shell脚本做动态添加文件-ubuntu
- 28. shell脚本导入mysql dump文件
- 29. 如何使用shell脚本在文本文件中添加空行?
- 30. Shell脚本:在文件
嗯..你确定参数扩展/子串提取是POSIX? Bash - 是的,Bourne - ?? –
'%'和'#'都是POSIX(这与它们是否在Bourne中是正交的)。 'bash'扩展将使用'num = $ {file /%[0-9] *}'在一个操作中匹配和删除前缀。 – chepner
@ DavidC.Rankin是的,我确定。 POSIX在这里定义它:http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_02我与The Opengroup合作:-) – Jens