下面是一个简单的文本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下划线()。
有什么想法?
下面是一个简单的文本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下划线()。
有什么想法?
不幸的是,sed
不支持查找屁股或查找aheads。但是perl
和ssed
呢(参见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
最简单的做法就是使用look-ahead assertion。 sed
不支持他们,但perl
作用:
perl -pe 's/-(?=.*=)/_/g'
这可能为你工作(GNU SED):
sed 'h;s/=.*//;y/-/_/;G;s/\n[^=]*//' file
尼斯使用的举行空间。 – 2012-07-12 20:09:41