3

这是一个示例文本

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

我想在每行中用下划线替换所有破折号 (-),直到达到 = 符号。

任何想法?

4

3 回答 3

4

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'
于 2012-07-12T13:58:36.540 回答
1

不幸的是,sed不支持后视或前瞻。但是perlssed(见罗布的回答)。如果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

高温高压

于 2012-07-12T14:08:43.883 回答
0

This might work for you (GNU sed):

sed 'h;s/=.*//;y/-/_/;G;s/\n[^=]*//' file
于 2012-07-12T16:06:22.833 回答