【发布时间】:2019-07-27 16:32:48
【问题描述】:
我有一个字符串 (file):
2 61009818 . TAGG T . . ad_alt=9;ad_ref=48;denovo=NA;dp_bin=50;
如何将子字符串ad_ref=48 替换为example=something,以获得:
2 61009818 . TAGG T . . ad_alt=9;example=something;denovo=NA;dp_bin=50;
用awk 替换?
我试过了:
awk '{ sub(/(ad_ref=.*\;)/,"example=something")} 1' file
但它会替换所有,从第一次匹配到行尾:
# output
2 61009818 . TAGG T . . ad_alt=9;example=something
虽然我只需要在第一个 ; 之前替换字符。
我发现了不同的帖子,但都是基于唯一的结束分隔符,如何告诉命令仅替换开始分隔符和 FIRST 结束分隔符之间的部分(在我的情况下为;)?
提前感谢您的帮助!
【问题讨论】:
-
ad_ref=[^;]*之类的。
标签: awk substring gsub substitution