回答
我認爲tr可以做你想做的。
variable=$(echo "${input}" | tr A-Z a-z | tr [:blank:] _ | tr -cd [:alnum:]_)
說明:
tr A-Z a-z
- 翻譯上套管字母,以降低套管。
tr [:blank:] _
- 將空格轉換爲下劃線。
tr -cd [:alnum:]_
- 刪除所有不是字母數字或下劃線的字符。
注意:如果要在將空格轉換爲下劃線之前刪除下劃線,可以在管道鏈開頭附近添加tr -cd _
。
Shell變量不能以數字開頭;所以添加「sed -e'1s/^ [0-9]/_&/'」到你的管道。 – pra 2010-08-03 17:56:35
下面是使用sed的另一種方法:
oldvar="HELLO MY BABY @$#@$ HI"
newvar=`echo $oldvar | sed -e "s/[A-Z]/\l&/g" -e "s/[^a-z0-9]/_/g"`
結果:
hello_my_baby__0___hi
heh 0暗中從$# – 2010-07-29 17:39:29
@duplicity:是的。好的(意外的)測試用例,看看會發生什麼。 :-) – 2010-07-29 17:41:35
我想過關於建議sed,但不知道如何匹配「空白」而不是僅僅空間。 sed是否支持posix類? – 2010-07-29 17:44:57
newvar=`echo "$oldvar" | awk '{gsub(/[ \t]+/,"_") ; gsub(/[^A-Z0-9]+/,"") ; print tolower($0)}' `
- 1. UNIX AWK逃逸單引號
- 2. JPA 2 Hibernate的逃逸字符串
- 3. 春逃逸已轉義字符串
- 4. 逃逸字符串爲MySQL在Java中
- 5. 逃逸SQL字符串中的Java
- 6. 在雙逃逸Javascript字符串行情
- 7. Python特殊字符逃逸
- 8. sed和逃逸字符
- 9. $ _POST內的逃逸字符
- 10. 高效VB逃逸字符像C#中的'字符串'
- 11. 逃逸%
- 12. 逃逸%
- 13. 逃逸@使用AWK
- 14. 如何擺脫逃逸字符
- 15. 逃逸在glob模式字符GIT中
- 16. 逃逸特殊字符jQuery中selecter
- 17. 如何XDocument.Save寫作逃逸字符
- 18. 龍捲風逃逸英鎊#字符
- 19. 如何替換逃逸字符?
- 20. 以變量名逃逸的字符
- 21. JavaScript的逃逸問題Unicode字符
- 22. 逃逸背後的魔力(\)字符
- 23. 逃逸JSON的特殊字符在c#
- 24. 逃逸符號「<%=' and '%>」
- 25. 逃逸報價/ F符
- 26. addcslashes逃逸大寫字母
- 27. 逃逸符號使用的sed
- 28. 逃逸@在引號的字符串的PowerShell
- 29. Postgres的子串逃逸開括號字符
- 30. 逃逸「\」字符在python串[需要避免六編碼]
什麼是 「UNIX準備好」 呢?如果您指的是文件名,則允許除「/」和「\ 0」之外的任何字符。您只需在使用時適當引用它。 – 2010-07-29 19:04:00
你在用什麼環境?您已將* batch *標記放在那裏,通常指的是(Windows)批處理文件。我以某種方式懷疑這是這種情況。 – Joey 2010-07-31 08:48:33