2012-07-12 42 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

相關問題