这是一个示例文本
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
我想在每行中用下划线替换所有破折号 (-),直到达到 = 符号。
任何想法?
这是一个示例文本
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
我想在每行中用下划线替换所有破折号 (-),直到达到 = 符号。
任何想法?
The easiest way to do something like that is using a look-ahead assertion. sed
doesn't support them, but perl
does:
perl -pe 's/-(?=.*=)/_/g'
不幸的是,sed
不支持后视或前瞻。但是perl
做ssed
(见罗布的回答)。如果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
高温高压
This might work for you (GNU sed):
sed 'h;s/=.*//;y/-/_/;G;s/\n[^=]*//' file