【问题标题】:deleting part after a specific character and that character删除特定字符和该字符之后的部分
【发布时间】:2021-10-28 19:05:54
【问题描述】:

我正在我的命令行/bash 中处理一个包含数百万行的大文件。我正在使用要求 rsID 少于 40 个字符的软件分析数据。

awk 'length($2)>40' 1000G_All_chr_merged.bim > IDtoolong.bim
head IDtoolong.bim 
1 rs540674385;rs540674385;rs540674385;rs576523156 0   4439107 AAG AAGGAGG
1 rs561687032;rs546685337;rs528205989;rs370782231 0   4804685 GCACACA GCA
1 rs561021122;rs542858700;rs527502051;rs560257256;rs545143128 0   6210427 AGG GGAAT
1 rs529037702;rs561824298;rs539915961;rs528175459 0   12122415    CCCATCCAT   AT
1 rs571308260;rs549871057;rs537509991;rs587738155 0   12611561    CAAA    CAAAA
1 rs553093917;rs553093917;rs534535365;rs570185860 0   16657917    AAAT    AAATAAT

如何遍历第二列并删除第一个分号 ; 以及之后的任何内容?

我试过了:

awk '{sub(/;.*/,"", $2)}' 1000G_All_chr_merged.bim > adjusted_IDlength.bim

我也使用了 sed,但发现自己在某一时刻毁了文件。任何帮助表示赞赏!

【问题讨论】:

    标签: linux awk sed


    【解决方案1】:

    我猜“破坏文件”是指更改字段之间的空白。如果这是问题所在,则以下内容不会这样做:

    $ sed 's/;[^[:space:]]*//' file
    1 rs540674385 0   4439107 AAG AAGGAGG
    1 rs561687032 0   4804685 GCACACA GCA
    1 rs561021122 0   6210427 AGG GGAAT
    1 rs529037702 0   12122415    CCCATCCAT   AT
    1 rs571308260 0   12611561    CAAA    CAAAA
    1 rs553093917 0   16657917    AAAT    AAATAAT
    

    【讨论】:

      猜你喜欢
      • 2020-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-05
      • 1970-01-01
      • 2020-12-06
      • 2019-11-14
      相关资源
      最近更新 更多