sed将破折号替换为下划线,直到到达字符
这里是一个示例文本sed将破折号替换为下划线,直到到达字符,sed,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 我想用下划线替换所有虚线(-),直到达到=号为止 有什么想法吗?最简单的方法就是使用sed不支持它们,但perl支持: perl -pe 's/-(?=
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
我想用下划线替换所有虚线(-),直到达到=号为止
有什么想法吗?最简单的方法就是使用
sed
不支持它们,但perl
支持:
perl -pe 's/-(?=.*=)/_/g'
不幸的是,
sed
不支持look behinds或look aheads。但是perl
和ssed
do(参见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这可能适合您(GNU-sed):
sed 'h;s/=.*//;y/-/_/;G;s/\n[^=]*//' file