我的输入是:
blabla 0/1:0,1,0:1 1/1:0,0,1.000:2 0/0:1,0,0:0 1/0:0,0.943,0.057:1.057 blabla
我想要的输出是:
blabla RA AA RR RA blabla
每个条目/字符串由制表符分隔。并且所有条目/字符串都在同一行。 我仅以上面的四个条目为例,其中有数百个其他条目,我正在寻找相似的模式。也就是说,每个字符串都以0 / 1,1 / 0,1 / 0或1/1开头。
我想将以0/1
或1/0
开头的字符串替换为RA
,以0/0
开头的字符串替换为RR
,以及字符串开头的字符串1/1
到AA
。
我现在使用的代码是
echo blabla 0/1:0,1,0:1 1/1:0,0,1.000:2 0/0:1,0,0:0 1/0:0,0.943,0.057:1.057 blabla | sed -e "s/0\/0/RR/g" -e "s/0\/1/RA/g" -e "s/1\/0/RA/g" -e "s/1\/1/AA/g"
然而,输出是
blabla RA:0,1,0:1 AA:0,0,1.000:2 RR:1,0,0:0 RA:0,0.943,0.057:1.057 blabla
我也尝试过以下代码
echo blabla 0/1:0,1,0:1 1/1:0,0,1.000:20/0:1,0,0:0 1/0:0,0.943,0.057:1.057 blabla | sed -e "s/0\/0:.*\\t/RR\\t/g" -e "s/0\/1:.*:\\t/RA\\t/g" -e "s/1\/0:.*\\t/RA\\t/g" -e "s/1\/1:.*\\t/AA\\t/g"
似乎根本不起作用。
答案 0 :(得分:0)
您正在寻找的是:
Firefox
哪个收益率:
blabla RA AA RR RA blabla
<强>解释强>
让我们专注于一次替换:echo blabla 0/1:0,1,0:1 1/1:0,0,1.000:2 0/0:1,0,0:0 1/0:0,0.943,0.057:1.057 blabla | sed -E "s/0\/1[^ \t]+/RA/g; s/1\/0[^ \t]+/RA/g; s/0\/0[^ \t]+/RR/g; s/1\/1[^ \t]+/AA/g"
这会将s/0\/1[^ \t]+/RA/g
替换为0\1anyth1ngexceptwhitespaces
。
对其他3种模式重复3次。
对于较新版本的RA
,您可以将sed
替换为"<space>\t"