awk用多个条件解析输入

时间:2015-03-16 14:52:14

标签: awk

这篇文章的延续:

使用awk解析特定条件并道歉如果我应该添加到帖子中,我应该将其添加到该帖子吗?我试图修改下面的awk脚本,但没有运气

awk 'NR==2 {
  split($2,a,"[_.>]");b=substr(a[4],1,length(a[4]-1));
  print a[2]+0,b,b,substr(a[4],length(a[4])),a[5]}' \
OFS="\t" ${id}_position.txt > ${id}_parse.txt

我有多个可能的条件,用户可以输入导致不同的输出。其中一个条件是数据样本,需要解析粗体字段:

` parse rules:
1. 4 zeros after the NC_  (not always the case) and the digits before the .
2. g. ### (before underscore)  _### (# after the _)
3. TG (letters after del)
4. -  (hyphen used in this spot)`    

数据样本

 Input Variant  Errors  Chromosomal Variant Coding Variant(s)
 NM_004004.5:c.575_576delCA     **NC_000013.10:g.20763145_20763146delTG** NM_004004.5:c.575_576delCA    XM_005266354.1:c.575_576delCA XM_005266355.1:c.575_576delCA XM_005266356.1:c.575_576delCA

期望输出

13     20763145     20763146     TG     -

谢谢你:)。

1 个答案:

答案 0 :(得分:1)

TXR Language:

Input Variant@(skip)
@(skip)NC_@{nc-raw}.@(skip)g.@{g-left}_@{g-right}del@{letters 2}@(skip)
@(bind nc-num @(int-str nc-raw))
@(output)
@{nc-num 6} @{g-left 12} @{g-right 12} @{letters 6} -
@(end)

Run:

$ txr nc.txr data
13     20763145     20763146     TG     -

All in the command line:

$ txr -c 'Input Variant@(skip)
@(skip)NC_@{nc-raw}.@(skip)g.@{g-left}_@{g-right}del@{letters 2}@(skip)
@(bind nc-num @(int-str nc-raw))
@(output)
@{nc-num 6} @{g-left 12} @{g-right 12} @{letters 6} -
@(end)' data
13     20763145     20763146     TG     -