awk脚本,用于使用文件的两个字段中的信息分析案例

awk脚本,用于使用文件的两个字段中的信息分析案例,awk,Awk,我有一个awk解析器,它适用于除一个数据输入之外的所有数据输入,我在使用它时遇到了问题。问题在于以下规则步骤1和2来自$2(NC_000013.10:g.20763686_20763687delinsA),步骤3和4来自$1(NM_004004.5:c.34_35delginst) 解析规则: 标题将被跳过并删除 NC_后4个零(不总是这种情况)和前4个数字 g、 ####(下划线前)####(#在35;之后) “del”后面的字母直到“ins” “ins”后面的字母 期望输出: 输入: 我的尝

我有一个
awk
解析器,它适用于除一个数据输入之外的所有数据输入,我在使用它时遇到了问题。问题在于以下规则步骤1和2来自
$2
(NC_000013.10:g.20763686_20763687delinsA),步骤3和4来自
$1
(NM_004004.5:c.34_35delginst)

解析规则: 标题将被跳过并删除

  • NC_后4个零(不总是这种情况)和前4个数字
  • g、 ####(下划线前)####(#在35;之后)
  • “del”后面的字母直到“ins”
  • “ins”后面的字母
  • 期望输出: 输入: 我的尝试:
    我认为在这种情况下,最好使用正则表达式。这是一个线性产生所需的输出:

    $ sed -nr 's/.*del([A-Z]+)ins([A-Z]+).*NC_0{4}([0-9]+).*g\.([0-9]+)_([0-9]+).*/\3\t\4\t\5\t\1\t\2/p' file
    13      20763686        20763687        GG      T
    
    它不会赢得任何选美奖,但希望它很清楚到底发生了什么。括号中的部分被捕获并在输出中使用,由制表符分隔

    Input Variant   Errors  Chromosomal Variant Coding Variant(s)
    NM_004004.5:c.34_35delGGinsT        NC_000013.10:g.20763686_20763687delinsA NM_004004.5:c.34_35delinsT  XM_005266354.1:c.34_35delinsT   XM_005266355.1:c.34_35delinsT   XM_005266356.1:c.34_35delinsT
    
    awk 'NR>1 {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" out_position.txt > out_parse.txt
    
    $ sed -nr 's/.*del([A-Z]+)ins([A-Z]+).*NC_0{4}([0-9]+).*g\.([0-9]+)_([0-9]+).*/\3\t\4\t\5\t\1\t\2/p' file
    13      20763686        20763687        GG      T