如何从Linux中多个文件夹中的文件创建具有特定列的新文件?

stack_learner

.tsv在100多个目录中文件。我想用tsv100个目录中所有那些文件所需要的所有信息制作一个文件

例如:

Data
 |___ SOB33D
        |___ SOB33D.tsv
 |___ SOB43E
        |___ SOB43E.tsv
 |___ SOB58D
        |___ SOB58D.tsv
 |___ SOB113A
        |___ SOB113A.tsv

中的数据SOB33D.tsv如下所示:

target_id         length    eff_length  est_counts
ENST00000456328.2   1657      1525.05      0
ENST00000450305.2   632       500.105      0
ENST00000488147.1   1351      1219.05    0.492522
ENST00000619216.1   68        12.9174    0.70395
ENST00000473358.1   712       580.105      0
ENST00000469289.1   535       403.105      0

SOB43E.tsv

target_id   length  eff_length  est_counts
ENST00000456328.2   1657    1525.05 0.174591
ENST00000450305.2   632 500.105 0
ENST00000488147.1   1351    1219.05 7.70424
ENST00000619216.1   68  12.9174 0.295008
ENST00000473358.1   712 580.105 0
ENST00000469289.1   535 403.105 0

SOB58D.tsv

target_id   length  eff_length  est_counts
ENST00000456328.2   1657    1525.05 0.282655
ENST00000450305.2   632 500.105 0
ENST00000488147.1   1351    1219.05 2.64778
ENST00000619216.1   68  12.9174 0
ENST00000473358.1   712 580.105 0
ENST00000469289.1   535 403.105 0

SOB113A.tsv

target_id   length  eff_length  est_counts
ENST00000456328.2   1657    1525.05 0.0225974
ENST00000450305.2   632 500.105 0
ENST00000488147.1   1351    1219.05 1.35652
ENST00000619216.1   68  12.9174 0
ENST00000473358.1   712 580.105 0
ENST00000469289.1   535 403.105 0

我正在尝试使用cut我几乎是正确的。我想要第一列和第二列在所有文件和中都相同4th column which is different in all the files所以,我像下面这样使用它:

paste */*.tsv | cut -f 1,2,4,8,12,16 > all_samples.tsv

在上面的命令中,我在所有文件中使用第一列和第二列,在所有文件中使用第四列。输出如下所示:

输出:

target_id        length est_counts  est_counts  est_counts  est_counts
ENST00000456328.2   1657    0   0.174591    0.282655    0.0225974
ENST00000450305.2   632 0   0   0   0
ENST00000488147.1   1351    0.492522    7.70424 2.64778 1.35652
ENST00000619216.1   68  0.70395 0.295008    0   0
ENST00000473358.1   712 0   0   0   0
ENST00000469289.1   535 0   0   0   0

预期产量:

target_id         length    SOB33D  SOB43E  SOB58D  SOB113A
ENST00000456328.2   1657    0   0.174591    0.282655    0.0225974
ENST00000450305.2   632 0   0   0   0
ENST00000488147.1   1351    0.492522    7.70424 2.64778 1.35652
ENST00000619216.1   68  0.70395 0.295008    0   0
ENST00000473358.1   712 0   0   0   0
ENST00000469289.1   535 0   0   0   0

我可以使用较少数量的文件paste,但是我有100 files in 100 directories那么,如何用文件夹名称作为列名称从所有这些.tsv文件中制作一个文件100 directories

任何帮助表示赞赏。坦克

埃德·莫顿
$ cat tst.awk
BEGIN {
    FS=OFS="\t"
    numCols = 2
}
{
    if ( FNR == 1 ) {
        numCols++
        val = FILENAME
        sub("/[^/]+$","",val)
        sub(".*/","",val)
    }
    else {
        val = $4
    }
    vals[FNR,1] = $1
    vals[FNR,2] = $2
    vals[FNR,numCols] = val
}
END {
    for (rowNr=1; rowNr<=FNR; rowNr++) {
        for (colNr=1; colNr<=numCols; colNr++) {
            printf "%s%s", vals[rowNr,colNr], (colNr<numCols ? OFS : ORS)
        }
    }
}

$ awk -f tst.awk */estimate.tsv
target_id       length  SOB33D  SOB43E
ENST00000456328.2       1657    0       0.174591
ENST00000450305.2       632     0       0
ENST00000488147.1       1351    0.492522        7.70424
ENST00000619216.1       68      0.70395 0.295008
ENST00000473358.1       712     0       0
ENST00000469289.1       535     0       0

上面是使用此输入(所有空格都是制表符)运行的:

$ head */estimate.tsv
==> SOB33D/estimate.tsv <==
target_id       length  eff_length      est_counts
ENST00000456328.2       1657    1525.05 0
ENST00000450305.2       632     500.105 0
ENST00000488147.1       1351    1219.05 0.492522
ENST00000619216.1       68      12.9174 0.70395
ENST00000473358.1       712     580.105 0
ENST00000469289.1       535     403.105 0

==> SOB43E/estimate.tsv <==
target_id       length  eff_length      est_counts
ENST00000456328.2       1657    1525.05 0.174591
ENST00000450305.2       632     500.105 0
ENST00000488147.1       1351    1219.05 7.70424
ENST00000619216.1       68      12.9174 0.295008
ENST00000473358.1       712     580.105 0
ENST00000469289.1       535     403.105 0

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从Grails中的引导程序在Web应用程序中创建新文件夹?

来自分类Dev

在FTP中创建新文件夹

来自分类Dev

如何使用AppleScript在桌面上的文件夹中创建新文件?

来自分类Dev

Python:如何在Linux的特定目录中查找上一个小时创建的新文件夹/目录

来自分类Dev

如何防止新控制器在“视图”文件夹中为其视图创建新文件夹?

来自分类Dev

如果路径不存在,则创建新文件夹(否则粘贴到现有文件夹中)

来自分类Dev

如何使用Storage Access Framework在SD卡中创建新文件夹?

来自分类Dev

如何获取文件夹中的最新文件?

来自分类Dev

如何从具有管理权限的终端创建新文件夹?

来自分类Dev

打开Linux文件夹中的最新文件

来自分类Dev

如何使用Finder在嵌套文件夹层次结构中创建新文件夹?

来自分类Dev

如何从具有管理权限的终端创建新文件夹?

来自分类Dev

从新文件夹(而不是文件夹)中的文件创建符号链接

来自分类Dev

如何使用MAC上的SCToolbarButton将具有新文件夹名称的重复副本提交到SVN中?

来自分类Dev

创建新文件夹并重命名并将所有具有特殊名称的文件夹移到新创建的文件夹中

来自分类Dev

Java中的mkdir创建新文件夹

来自分类Dev

在Win 7的特定文件夹中创建新文件时执行批处理文件

来自分类Dev

如何在Mutt中创建新文件夹

来自分类Dev

无法在首页中创建新文件夹

来自分类Dev

如何从Linux中的多个不同文件创建具有所需列的新文件?

来自分类Dev

如何在Files / Nautilus中创建新文件夹

来自分类Dev

如何获取文件夹中的最新文件?

来自分类Dev

如何在Amazon S3存储桶中创建新文件夹?

来自分类Dev

当 Firebase 存储中有一个名为相同的现有文件夹时,如何在 Firebase 中创建一个新文件夹

来自分类Dev

如何使用批处理文件将特定子文件夹(如果存在)复制到备份文件夹中的新文件夹?

来自分类Dev

在 Android Studio 中创建新文件夹是空的(这里什么都没有)

来自分类Dev

我想保存新文件并在“文档”的新文件夹中创建文件

来自分类Dev

如何使用bash将子文件夹中的所有文件移动到新文件夹中?

来自分类Dev

如何在 UNIX 中创建新文件夹并将早于特定日期的“.log”文件从某个位置复制到此文件夹?

Related 相关文章

  1. 1

    如何从Grails中的引导程序在Web应用程序中创建新文件夹?

  2. 2

    在FTP中创建新文件夹

  3. 3

    如何使用AppleScript在桌面上的文件夹中创建新文件?

  4. 4

    Python:如何在Linux的特定目录中查找上一个小时创建的新文件夹/目录

  5. 5

    如何防止新控制器在“视图”文件夹中为其视图创建新文件夹?

  6. 6

    如果路径不存在,则创建新文件夹(否则粘贴到现有文件夹中)

  7. 7

    如何使用Storage Access Framework在SD卡中创建新文件夹?

  8. 8

    如何获取文件夹中的最新文件?

  9. 9

    如何从具有管理权限的终端创建新文件夹?

  10. 10

    打开Linux文件夹中的最新文件

  11. 11

    如何使用Finder在嵌套文件夹层次结构中创建新文件夹?

  12. 12

    如何从具有管理权限的终端创建新文件夹?

  13. 13

    从新文件夹(而不是文件夹)中的文件创建符号链接

  14. 14

    如何使用MAC上的SCToolbarButton将具有新文件夹名称的重复副本提交到SVN中?

  15. 15

    创建新文件夹并重命名并将所有具有特殊名称的文件夹移到新创建的文件夹中

  16. 16

    Java中的mkdir创建新文件夹

  17. 17

    在Win 7的特定文件夹中创建新文件时执行批处理文件

  18. 18

    如何在Mutt中创建新文件夹

  19. 19

    无法在首页中创建新文件夹

  20. 20

    如何从Linux中的多个不同文件创建具有所需列的新文件?

  21. 21

    如何在Files / Nautilus中创建新文件夹

  22. 22

    如何获取文件夹中的最新文件?

  23. 23

    如何在Amazon S3存储桶中创建新文件夹?

  24. 24

    当 Firebase 存储中有一个名为相同的现有文件夹时,如何在 Firebase 中创建一个新文件夹

  25. 25

    如何使用批处理文件将特定子文件夹(如果存在)复制到备份文件夹中的新文件夹?

  26. 26

    在 Android Studio 中创建新文件夹是空的(这里什么都没有)

  27. 27

    我想保存新文件并在“文档”的新文件夹中创建文件

  28. 28

    如何使用bash将子文件夹中的所有文件移动到新文件夹中?

  29. 29

    如何在 UNIX 中创建新文件夹并将早于特定日期的“.log”文件从某个位置复制到此文件夹?

热门标签

归档