【问题标题】:Cut Columns and Append to Same File剪切列并附加到同一文件
【发布时间】:2020-04-10 11:29:37
【问题描述】:

我正在使用 MacOS 上的制表符分隔文件。该文件包含 15 列和数千行。我想剪切第 1、2 和 3 列,然后将它们附加到第 11、12 和 13 列。我希望在管道中执行此操作,这样就不需要创建额外的文件。我发现的唯一帖子使用了命令 sponge,但我显然在 MacOS 上没有,或者它不在我的 BASH 中。

输入的 tsv 文件实际上是在同一行代码中生成的,

arbitrary command to generate input.tsv | cut -f1-3,11-13 | <Step to cut -f4-6 and append -f1-3> | sort > out.file

输入 tsv

chr1    21018   21101   A   B   C   D   E   F   G   chr1    20752   21209
chr10   74645   74836   A   B   C   D   E   F   G   chr10   74638   74898
chr10   75267   75545   A   B   C   D   E   F   G   chr10   75280   75917
chr4    212478  212556  A   B   C   D   E   F   G   chr4    212491  213285

所需的输出 tsv

chr1    21018   21101
chr1    20752   21209
chr10   74638   74898
chr10   74645   74836
chr10   75280   75917
chr4    212478  212556
chr4    212491  213285

【问题讨论】:

    标签: awk append pipe cut


    【解决方案1】:

    使用

    代码

    perl -pe 's/chr[0-9]+/\n$&/g' file | awk '/./{print $1, $2, $3}'
    

     输出

    chr1 21018 21101
    chr1 20752 21209
    chr10 74645 74836
    chr10 74638 74898
    chr10 75267 75545
    chr10 75280 75917
    chr4 212478 212556
    chr4 212491 213285
    

    【讨论】:

    • 你好吉尔斯。有没有办法用粘贴管这个?这不太正确,但也许您会看到如何调整下面的粘贴命令?
      arbitrary command to generate input.tsv | cut -f1-3,11-13 | paste <(cut -f1-3 test.bed) <(cut -f4-6 test.bed | sort > out.file
    【解决方案2】:

    这里是简短的awk 解决方案:

    awk '{print $1, $2, $3, "\n" $1, $12, $13;}' input.tsv
    

    输出:

    chr1 21018 21101 
    chr1 20752 21209
    chr10 74645 74836 
    chr10 74638 74898
    chr10 75267 75545 
    chr10 75280 75917
    chr4 212478 212556 
    chr4 212491 213285
    

    说明

    { # for each input line
        print $1, $2, $3; # print 1st field, append 2nd and 3rd fields. Terminate with new line
        print $1, $12, $13; #print 1st field, append 12th and 13th field. Terminate with new line
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-15
      • 1970-01-01
      • 2021-06-04
      • 2013-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多