awk解析具有多个条件的输入

awk解析具有多个条件的输入,awk,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

本职位是以下内容的延续:

使用
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     -
谢谢:)。

TXR语言:

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)
运行:

命令行中的所有内容:

$ 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     -

当前代码仅在读取第二条记录时有效。这是你想要的吗?如果您试图跳过一个标题记录,然后处理完之后的所有内容,您将需要
NR>1
。而且,很抱歉地说,但事实上,这个问题的严重程度令人难以理解。你说“我有多种可能的条件”,但下一句是“其中一个条件是……”。那么你只对解决那一个案子感兴趣吗?如果是这样,“多种可能条件”无助于我们的理解。在您更好地理解awk之前,我建议您一次解决一个问题。祝你好运。也许我没有这些模糊的字符串(你的数据样本),而是发布了
NC_000013.10:g.20763145\u 2076314deltg
,我只需要从最左边的
NC_000013
中提取
13
。让所有这些翻译都正常工作,然后我们可以根据需要添加逻辑到流程或跳过记录。换句话说,简单的示例输入和所需的输出,以及您试图解决的问题、当前的输出和任何错误消息的确切文本,使帮助变得更容易。祝你好运。我不太明白这个问题,但你可以用awk中的match来拉出字符串。例如,NC字符串awk'match($0,/NC_0000(..)\./,NC){print NC[0]}将打印13。根据需要更改并重复:)是的,我打算跳过标题,发布的代码对于一种条件或数据格式非常有效。但是,如果发布的格式不同,则
awk
不起作用。我正在尝试重做代码,以使其在条件1(已经工作)和条件2下工作。谢谢:)。
$ 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     -