需要Sed或任何脚本来删除字符之间的空格并用下划线替换

时间:2011-04-06 14:39:32

标签: regex perl bash sed

我有一个大的语言.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

3 个答案:

答案 0 :(得分:2)

最好使用awk

$ awk 'BEGIN{OFS=FS="="}{gsub(/ /,"_",$1)}1' file
CC_MY_APPS=My aplications
CC_MY_APPLICATION_SETTINGS_TITLE=My Settings

或者如果你有Ruby(1.9 +)

$ ruby -F"=" -ane '$F[0].gsub!(/\s+/,"_");puts $F.join("=")' file

答案 1 :(得分:0)

一种perl方式,非常类似于kurumi在Ruby中的解决方案:

perl -i.orig -F= -ane '$F[0]=~s/\s+/_/g;print join"=",@F' file.ini

原始文件将保存到file.ini.orig

答案 2 :(得分:0)

或者,如果您的值不包含'=',则可以尝试:

perl -pi.bak -e 's/\s+(?=.*=)/_/g' file.ini

使用前瞻。