我有名稱爲「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