我有一個很大的語言.ini文件,其線條代替這個樣子:需要桑達或任何腳本字符之間的空格去掉,並用下劃線
CC MY APPS=My aplications
CC MY APPLICATION SETTINGS TITLE=My Settings
我需要刪除CC之間的所有空格和=和替換像這樣下劃線:
CC_MY_APPS=My aplications
CC_APPLICATION_SETTINGS_TITLE=My Settings
我有一個很大的語言.ini文件,其線條代替這個樣子:需要桑達或任何腳本字符之間的空格去掉,並用下劃線
CC MY APPS=My aplications
CC MY APPLICATION SETTINGS TITLE=My Settings
我需要刪除CC之間的所有空格和=和替換像這樣下劃線:
CC_MY_APPS=My aplications
CC_APPLICATION_SETTINGS_TITLE=My Settings
這是更好地使用awk
$ awk 'BEGIN{OFS=FS="="}{gsub(/ /,"_",$1)}1' file
CC_MY_APPS=My aplications
CC_MY_APPLICATION_SETTINGS_TITLE=My Settings
或者,如果你有紅寶石(1.9+)
$ ruby -F"=" -ane '$F[0].gsub!(/\s+/,"_");puts $F.join("=")' file
一個Perl的方式來做到這一點,非常相似,胡桃在Ruby的解決方案:
perl -i.orig -F= -ane '$F[0]=~s/\s+/_/g;print join"=",@F' file.ini
原始文件將被保存到file.ini.orig
謝謝你M42,你的腳本也很棒;) – 2011-04-06 19:45:17
另外,如果你的價值觀不包含 '=',你可以嘗試:
perl -pi.bak -e 's/\s+(?=.*=)/_/g' file.ini
使用預見。
在連接方法中使用'$ ;. inspect'可能更好,而不是硬編碼分隔符字符串。 – 2011-04-06 16:04:11
謝謝你Kurumi,嘗試過你的ruby腳本並且工作正常... – 2011-04-06 19:44:06