针对不同数据组合的更高效的awk解析器

针对不同数据组合的更高效的awk解析器,awk,Awk,我有一个awk解析器,如果数据是NC_0000四位数字,它会非常有效,但如果不是这样,则会解析数据。我不确定获得所需输出的最有效方法。谢谢 代码: 例如: NC_000013.10:g.20763466G>A NC_00001.10:g.20763477C>G 将被解析为 13 20763466 20763466 G A 1 20763477 20763477 C G 但是这个 NC_000004.11:g.41749507G>T

我有一个awk解析器,如果数据是NC_0000四位数字,它会非常有效,但如果不是这样,则会解析数据。我不确定获得所需输出的最有效方法。谢谢

代码:

例如:

NC_000013.10:g.20763466G>A
NC_00001.10:g.20763477C>G 
将被解析为

13  20763466    20763466    G   A 
1   20763477    20763477    C   G
但是这个

NC_000004.11:g.41749507G>T
这是行不通的。下面列出了所需的输出格式,并且始终如此。谢谢

解析规则:

NC后4个零-不总是大小写和数字前的数字

g后面的数字。重复两次,以制表符分隔

前信>

邮件后面的字母>

添加使用

awk -F"[_.>]" '{a=length($4);b=substr($4,1,a-1);print $2+0,b,b,substr($4,a),$5}' OFS="\t" Target.txt
0
4004    244     244     G       A               NC
3924    288     288     C       A               NC
3924    385     385     G       A               NC
谢谢:

此awk应能:

cat file
NC_000013.10:g.20763466G>A
NC_00001.10:g.20763477C>G
NC_000004.11:g.41749507G>T
如果g后面的位数。可能会更改,请使用以下命令:

awk -F"[_.>]" '{a=length($4);b=substr($4,1,a-1);print $2+0,b,b,substr($4,a),$5}' OFS="\t" file

试着读一读到目前为止你问了几个问题,但没有接受任何问题,也没有正确的格式。由于你不接受任何答案,我们不得不假设你在这里收到的答案都对你没有用处,因此我们不妨结束这一个,这样就没有人在上面浪费更多的时间。我将这个问题改为像帖子一样,我希望它更好。谢谢:。我使用第二个awk得到的结果是不同的,我在原始线程中发布了它们。谢谢:.@user3665765根据您帖子中的数据,我得到了这个输出。请参阅我文章中的数据。在帖子中添加更多输入数据,并正确设置数据格式。
awk -F"[_.>]" '{print $2+0,substr($4,1,8),substr($4,1,8),substr($4,9,1),$5}' OFS="\t" file
13      20763466        20763466        G       A
1       20763477        20763477        C       G
4       41749507        41749507        G       T
awk -F"[_.>]" '{a=length($4);b=substr($4,1,a-1);print $2+0,b,b,substr($4,a),$5}' OFS="\t" file