我有串如下:如何更換用下劃線空格和雙引號什麼也沒有在bash
$ echo "$val1"
"$29.95 Carryover Plan 1GB"
現在我可以用這個方法用下劃線
$ echo "NAME_"${val1// /_}"_NAME"
NAME_"$29.95_Carryover_Plan_1GB"_NAME
並能替代空間做同樣什麼也沒有
$ echo "NAME_"${val1//'"'/}"_NAME"
NAME_$29.95 Carryover Plan 1GB_NAME
更換"
雙引號現在,我可以使用SED做同樣的 - 用下劃線
$ echo "$val1" | sed s/" "/_/g
"$29.95_Carryover_Plan_1GB"
,然後我可以加入這個sed s/'"'/''/g
$ echo "$val1" | sed s/" "/_/g | sed s/'"'/''/g
$29.95_Carryover_Plan_1GB
除去雙引號來代替空格所以這就是我想要的(空間repalaced帶下劃線和雙引號刪除),但我可以實現它使用我的第一種方法,例如
$ echo "NAME_"${val1// /_}"_NAME"
NAME_"$29.95_Carryover_Plan_1GB"_NAME
這是我嘗試
$ echo "NAME_"${${val1// /_//'"'/}}"_NAME"
-sh: "NAME_"${${val1// /_//'"'/}}"_NAME": bad substitution
EDIT1這是sed的,我可以做到,但我希望能夠通過我的第一種方法來實現這一
$ echo "NAME_"$val1"_NAME" | sed s/" "/_/g | sed s/'"'/''/g
NAME_$29.95_Carryover_Plan_1GB_NAME
看到[這裏](http://stackoverflow.com/a/38559775/2392358)'a =「NAME _ $ {$ {val1 ///_} // \」/} _ NAME「'可以在zsh – HattrickNZ