【发布时间】:2017-08-02 17:21:17
【问题描述】:
我需要将字符串中的最后一个点替换为字符“-”。
# a='2.5.2.pl'
使用以下表达式:
# echo ${a/%./-}
我希望得到:
2.5.2-pl
但我明白了
2.5.2.pl
我注意到只有当我需要将点从末尾替换到开头时它才起作用。为什么会发生? 当然我可以使用 awk、sed 等外部程序来解决这个问题,但我需要只使用 bash 来解决问题。
感谢您的建议!
【问题讨论】:
我需要将字符串中的最后一个点替换为字符“-”。
# a='2.5.2.pl'
使用以下表达式:
# echo ${a/%./-}
我希望得到:
2.5.2-pl
但我明白了
2.5.2.pl
我注意到只有当我需要将点从末尾替换到开头时它才起作用。为什么会发生? 当然我可以使用 awk、sed 等外部程序来解决这个问题,但我需要只使用 bash 来解决问题。
感谢您的建议!
【问题讨论】:
【讨论】:
我的方法有点老套,使用rev,但我测试了它,它可以工作!
echo "$(_b=$(echo "$a" | rev); _b=${_b/./-}; echo "$_b" | rev)"
基本上,我只是颠倒了字符顺序,所以最后一个. 是第一个,然后使用${var/./-} 将点替换为破折号,最后再次颠倒字符的顺序。
【讨论】:
[0-9a-f]{24} 的名称的目录中运行——然后一个单独的程序中的一个错误创建了一个从内存中转储垃圾的文件名,该脚本扩展了该名称中的一个 glob 并删除了 TB 的计费数据备份。