2012-07-12 57 views
3

下面是一个简单的文本SED替代破折号,直到字符到达

enable-threads  = yes 
enable-shared  = yes 
enable-parser  = yes 
DAL-II-VERSION  = 7.1.0 
DAL-II-MAJOR  = -L -f -g 
DAL-II-MINOR   = 1 

我想替换所有dashs - 直到达到等号(=)与everyline下划线()。

有什么想法?

回答

1

不幸的是,sed不支持查找屁股或查找aheads。但是perlssed呢(参见Rob的回答)。如果perl是不可用的,这是一个使用awk一个办法:

awk -F= 'OFS=FS { gsub("-", "_", $1); }1' file.txt 

输出:

enable_threads  = yes 
enable_shared  = yes 
enable_parser  = yes 
DAL_II_VERSION  = 7.1.0 
DAL_II_MAJOR  = -L -f -g 
DAL_II_MINOR   = 1 

HTH

4

最简单的做法就是使用look-ahead assertionsed不支持他们,但perl作用:

perl -pe 's/-(?=.*=)/_/g' 
0

这可能为你工作(GNU SED):

sed 'h;s/=.*//;y/-/_/;G;s/\n[^=]*//' file 
+0

尼斯使用的举行空间。 – 2012-07-12 20:09:41