【问题标题】:How to extract a string following a pattern using unix(mac OSX)如何使用unix(mac OSX)按照模式提取字符串
【发布时间】:2016-08-27 01:01:30
【问题描述】:

我有这些列和制表符分隔的文件。

Jun-AP1(bZIP)/K562-cJun-ChIP-Seq(GSE31477)/Homer    12.88%  4926.5  9.08%
Maz(Zf)/HepG2-Maz-ChIP-Seq(GSE31477)/Homer  52.08%  25510.3 47.00%
Bach2(bZIP)/OCILy7-Bach2-ChIP-Seq(GSE44420)/Homer   10.81%  4377    8.06%
Atf3(bZIP)/GBM-ATF3-ChIP-Seq(GSE33912)/Homer    28.73%  13346.9 24.59%
TEAD4(TEA)/Tropoblast-Tead4-ChIP-Seq(GSE37350)/Homer    40.43%  19549.3 36.01%

在第一列中,我想将字符串提取到第一个括号并保持其余列相同。 例如,我需要如下所示的输出。

Jun-AP1 12.88%  4926.5  9.08%
Maz 52.08%  25510.3 47.00%
Bach2   10.81%  4377    8.06%
Atf3    28.73%  13346.9 24.59%
TEAD4   40.43%  19549.3 36.01%

谢谢。

【问题讨论】:

    标签: macos unix awk grep


    【解决方案1】:

    我会开始

    sed 's/([^ ]*//'
    

    这是[^ ] 中的实际制表符。

    【讨论】:

    • 在你的答案中没有 '(' 就可以完美运行。即 sed 's/[^ ]*//'
    • @EdMorton 哎呀!感谢您指出了这一点。 (愚蠢的剪切和粘贴错误,就像一个该死的新手。)@NareshDJ 是的,正如您所发现的,它应该是 s/([^ ]*//,没有 ​\​
    【解决方案2】:
    awk '{sub(/\(.*Homer/,"")}{print $1,$2,$3,$4}' file
    
    Jun-AP1 12.88% 4926.5 9.08%
    Maz 52.08% 25510.3 47.00%
    Bach2 10.81% 4377 8.06%
    Atf3 28.73% 13346.9 24.59%
    TEAD4 40.43% 19549.3 36.01%
    

    【讨论】:

      猜你喜欢
      • 2021-10-12
      • 2011-07-02
      • 2021-05-23
      • 1970-01-01
      • 2012-07-07
      • 2010-12-17
      • 2011-10-08
      • 2010-10-27
      相关资源
      最近更新 更多