簡體   English   中英

使用awk將不同文件中的列復制到單個文件中

[英]copying columns from different files into a single file using awk

我大約有500多個文件,其中有兩列“ Gene short name”和“ FPKM”值。 行數是相同的,並且“ Gene short name”列在所有文件中都是公用的。 我想通過將第一列保留為基因短名稱(可以從任何文件中獲取)並保留其他具有FPKM的列來創建矩陣。

我已經使用了此命令,但效果很好,但是,如何將其用於500個文件?

 paste -d' ' <(awk -F'\t' '{print $1}' 69_genes.fpkm.txt) \
            <(awk -F'\t' '{print $2}' 69_genes.fpkm.txt) \
            <(awk -F'\t' '{print $2}' 72_genes.fpkm.txt) \
            <(awk -F'\t' '{print $2}' 75_genes.fpkm.txt) \
            <(awk -F'\t' '{print $2}' 78_genes.fpkm.txt) > col.txt

樣本數據(文件用制表符分隔):

head 69_genes.fpkm.txt 
gene_short_name FPKM
        DDX11L1 0.196141
        MIR1302-2HG 0.532631
        MIR1302-2   0
        WASH7P  4.51437

預期結果

gene_short_name FPKM FPKM FPKM FPKM
DDX11L1 0.196141 0.206591 0.0201256 0.363618
MIR1302-2HG 0.532631 0.0930007 0.0775838 0
MIR1302-2 0 0 0 0
WASH7P 4.51437 3.31073 3.23326 1.05673
MIR6859-1 0 0 0 0
FAM138A 0.505155 0.121703 0.105235 0
OR4G4P 0.0536387 0 0 0
OR4G11P 0 0 0 0
OR4F5 0.0390888 0.0586067 0 0

另外,我想將名稱“ FPKM”更改為“ filename_FPKM”。

給定輸入

$ cat a.txt
a       1
b       2
c       3
$ cat b.txt
a       I
b       II
c       III
$ cat c.txt
a       one
b       two
c       three

您可以循環:

cut -f1 a.txt > result.txt
for f in a.txt b.txt c.txt
do
  cut -f2 "$f" | paste result.txt - > tmp.txt
  mv {tmp,result}.txt
done
$ cat result.txt
a       1       I       one
b       2       II      two
c       3       III     three

在awk中,為了清楚起見,使用@Micha的數據:

$ awk '  
BEGIN { FS=OFS="\t" }    # set the field separators
FNR==1 {
    $2=FILENAME "_" $2   # on first record of each file rename $2
}
NR==FNR {                # process the first file
    a[FNR]=$0            # hash whole record to a
    next
}
{                        # process other files
    a[FNR]=a[FNR] OFS $2 # add $2 to the end of the record
}
END {                    # in the end
    for(i=1;i<=FNR;i++)  # print all records
        print a[i]
}' a.txt b.txt c.txt

輸出:

a       a.txt_1 b.txt_I c.txt_one
b       2       II      two
c       3       III     three

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM