【问题标题】:awk to parse input and remove text in fieldawk 解析输入并删除字段中的文本
【发布时间】:2015-10-17 02:13:05
【问题描述】:

尝试使用awk 解析文件但没有得到所需的输出,我似乎无法弄清楚。谢谢你:)。

input.txt

chr1    955543  955763  AGRN-6|pr=2|gc=75   0   +
chr1    957571  957852  AGRN-7|pr=3|gc=61.2 0   +
chr1    970621  970740  AGRN-8|pr=1|gc=57.1 0   +

当前输出.txt

chr1    955543  955763  AGRN-6 pr=2 gc=75   0   +

chr1    957571  957852  AGRN-7 pr=3 gc=61.2 0   +

chr1    970621  970740  AGRN-8 pr=1 gc=57.1 0   +

desired output.txt|pr=2|gc=75 0,以及行间距)从输出中移除

chr1    955543  955763  AGRN-6  +
chr1    957571  957852  AGRN-7  +
chr1    970621  970740  AGRN-8  +

这是我尝试过的:

awk -F"[*|]" '{print $1, $2, $3, $4, $5, $6,}' input.txt > output.txt

【问题讨论】:

    标签: awk


    【解决方案1】:

    你可以这样做:

    awk -F '[[:blank:]]+|\\|' '{print $1, $2, $3, $4, $NF}'
    

    这会为您提供所需的字段,但不会保留间距。这将:

    awk '{sub(/\|[^[:blank:]]+[[:blank:]]+[0-9]+/, ""); print }' <<END
    chr1    955543  955763  AGRN-6|pr=2|gc=75   0   +
    chr1    957571  957852  AGRN-7|pr=3|gc=61.2 0   +
    chr1    970621  970740  AGRN-8|pr=1|gc=57.1 0   +
    END
    
    chr1    955543  955763  AGRN-6   +
    chr1    957571  957852  AGRN-7   +
    chr1    970621  970740  AGRN-8   +
    

    【讨论】:

      【解决方案2】:

      可能是最简单的解决方案:

      awk -F"|" '{print $1"   +"}' input.txt > output.txt
      

      但是,在此解决方案中,后面的“+”是手动添加的。输出:

      chr1    955543  955763  AGRN-6   +
      chr1    957571  957852  AGRN-7   +
      chr1    970621  970740  AGRN-8   +
      

      要不然试试

       awk -F"[| ]+" '{print $1, $2, $3, $4, $8}' input.txt > output.txt
      

      哪个输出

      chr1 955543 955763 AGRN-6 +
      chr1 957571 957852 AGRN-7 +
      chr1 970621 970740 AGRN-8 +
      

      【讨论】:

        【解决方案3】:

        另一种选择(如果您不关心输出间距)

        $ awk '{split($4,a,"|"); print $1,$2,$3,a[1],$NF}' file
        chr1 955543 955763 AGRN-6 +
        chr1 957571 957852 AGRN-7 +
        chr1 970621 970740 AGRN-8 +
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-10-09
          • 1970-01-01
          • 1970-01-01
          • 2015-04-17
          • 1970-01-01
          • 2020-01-21
          • 2011-04-26
          • 2014-02-14
          相关资源
          最近更新 更多