1 つのファイルからのインデックス値を使用して awk 印刷し、2 番目のファイルからデータを抽出し、3 番目のファイルに出力を保存する方法は?

サラ

次のような 2 つのファイルがあります。

# File 1 has 3 columns:
SampleName   Type     Position
5R01924      ABC      92184093
5R01028      ABC      15589809
5R01092      ABC      48759348
# File 2 has many columns. 
# Column 2 is the Position 
# Columns 5 to end are the different SampleNames
A   Position   B    C    5R01924       5R01028       5R01092 
1   15589809   2    3    D:E:F:G       H:I:J:K       L:M:N:O
1   92184093   2    3    P:Q:R:S       T:U:V:W       X:Y:Z:AA
1   48759348   2    3    AB:AC:AD:AE   AF:AG:AH:AI   AJ:AK:AL:AM

最初のファイルに 4 番目の列を追加するか、ファイル 1 を複製して 4 番目の列をこの新しい 3 番目のファイルに追加します。

4 番目の列には、ファイル 1 のインデックスを使用して、ファイル 2 から抽出された正しい情報が含まれている必要があります。したがって、ファイル 1 の行 1 は、ファイル 2 の行 2 に移動し、列 5 (5R01924) から情報を抽出することを示しています。ただし、この情報の R 部分のみが必要です。したがって、出力は次のようになります。

# file 3 or append column 4 to file 1
SampleName   Type     Position     Output
5R01924      ABC      92184093     R
5R01028      ABC      15589809     J
5R01092      ABC      48759348     AL

これまでのところ、私はこのようなものを持っています:

while IFS=" " read -r value1 value2 value3
do
        awk '$2 == "${value3}" {
        # find column # from name of value 1 (save as col variable) 
        print split(${col},a,":"), a[3]
        }' file2 >> file3.txt
done
# where does file 1 go? 

助けてください :)

グレン・ジャックマン

awk はこれを単独で処理できます。これは「combine.awk」ファイルです。

# first file, first line
FILENAME == ARGV[1] && FNR == 1  {
    for (i=5; i<=NF; i++) head[i] = $i
}

# first file,  subsequent lines
FILENAME == ARGV[1] && FNR > 1 {
    for (i=5; i<=NF; i++) {
        split($i, f, /:/)
        value[$2, head[i]] = f[3]
    }
}

# second file
FILENAME == ARGV[2] {
    print $0, (FNR == 1 ? "Output" : value[$3, $1])
}

そして、あなたはこのようにそれを呼び出します

awk -f combine.awk file2 file1 > file3

そして出力ファイルには

SampleName   Type     Position Output
5R01924      ABC      92184093 R
5R01028      ABC      15589809 J
5R01092      ABC      48759348 AL

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ