簡體   English   中英

bash從字符串末尾替換一個字符

[英]bash replace one character from the end of string

我需要將最后一個點替換為字符串中的字符“-”。

# a='2.5.2.pl'

使用以下表達式:

# echo ${a/%./-}

我希望得到:

2.5.2-pl

但我明白了

2.5.2.pl

我注意到,僅當我需要從頭到尾替換點時,它才起作用。 為什么會發生? 當然,我可以使用諸如awk,sed之類的外部程序來解決此問題,但我僅需使用bash即可解決問題。

謝謝你的建議!

隨着bash的參數擴展

a='2.5.2.pl'
echo "${a%.*}-${a##*.}"

輸出:

2.5.2-pl

我的方法有點hacky,使用了rev但我對其進行了測試,並且可以正常工作!

echo "$(_b=$(echo "$a" | rev); _b=${_b/./-}; echo "$_b" | rev)"

基本上,我只是顛倒了字符順序,所以最后一個. 首先使用${var/./-} ,然后使用破折號代替點,最后再次顛倒字符的順序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM