gpt4 book ai didi

awk - 从每个文件中提取相同的列到一个文件

转载 作者:行者123 更新时间:2023-12-04 09:02:53 34 4
gpt4 key购买 nike

我有以下包含 171 个文件的数据集。

CHR:POS   REF:ALT   BREED

6:85406127 T:A 0.333333
6:85406128 T:C 0
6:85406129 C:G 0.333333
6:85406130 T:G 0.833333
期望的输出是
CHR:POS   REF:ALT   BREED BREED2 BREED3 ... 171st file

6:85406127 T:A 0.333333 0.33 0.5 .... 0.4
6:85406128 T:C NA 0.33 0.5 .... 0.4
6:85406129 C:G 0.333333 0.33 NA .... 0
6:85406130 T:G 0.833333 0.33 0.5 .... NA
文件名包含品种名称。第一列和第二列在每个文件中包含相同的信息。我将如何仅从每个文件中提取第三列,同时保留第一个文件中的所有列?
我将第一个文件移动到其他文件夹中以从提取中排除。以下命令没有给出结果。
cut -d " " -f3 *.txt | paste ../breedname.txt - > output.txt
我也曾尝试使用这些问题中显示的 awk 命令,但它对我的数据集不起作用。
  • paste same column from multiple files into one
  • Print every nth column of a file

  • 欢迎任何帮助!

    最佳答案

    这是一种非常快速和肮脏的方法:
    假设您的文件顺序相同:

    $ awk '(FNR==NR){a[FNR]=$0;next}
    {a[FNR]=a[FNR] FS $NF}
    END{for(i=1;i<=FNR;++i) print a[i]}' file1 file2 file3 ... filen
    如果你想让标题更干净一点:
    $ awk '(FNR==NR){a[FNR]=$0 (FNR==1?++c:"");next}
    {a[FNR]=a[FNR] FS $NF (FNR==1?++c:"")}
    END{for(i=1;i<=FNR;++i) print a[i]}' file1 file2 file3 ... filen
    假设您的文件顺序不同:
    $ awk '{key=$1 FS $2}
    (FNR==NR){a[key]=$0 (FNR==1?++c:"");next}
    {a[key]=a[key] FS $NF (FNR==1?++c:"")}
    END{for(i in a) print a[i]}' file1 file2 file3 ... filen

    关于awk - 从每个文件中提取相同的列到一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63524301/

    34 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com