针对不同数据组合的更高效的awk解析器
我有一个awk解析器,如果数据是NC_0000四位数字,它会非常有效,但如果不是这样,则会解析数据。我不确定获得所需输出的最有效方法。谢谢 代码: 例如:针对不同数据组合的更高效的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
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