あるファイルの列を別のファイルの最後の列として追加

あるファイルの列を別のファイルの最後の列として追加

テキストファイルの特定の列(私の場合は列4)が新しいテキストファイルの最後の列として追加されるループを作成したいと思います。 4番目の列をインポートし、新しいテキストファイル(タブで区切られた列)に追加したい合計500個のテキストファイル(V1-V500)があります。すべてのテキストファイルの行数は同じです。さらに、追加された列のヘッダーには、その列が最初に指定されたテキストファイルのファイル名を含める必要があります。私はawkとforループを使ってコマンドラインを設定してみましたが、どのコマンドも機能しません。以前のコマンドラインに基づいてコマンドラインを試しました。郵便はがき。私は利用可能なGNUツールを使用してLinuxで作業しています。

例: V1 テキストファイル

header1 header2 header3 header4
1       5       9       13 
2       6       10      14
3       7       11      15
4       8       12      16

V2テキストファイル:

header1 header2 header3 header4
17       25       21      29 
18       26       22      30
19       27       23      31
20       28       24      32

新しいテキストファイル:

V1 V2
13 29
14 30
15 31
16 32

ご協力ありがとうございます!

ベストアンサー1

awkすべてのファイルを解析します。

awk -F'\t' -v OFS='\t' '{
        x = (FNR==1 ? FILENAME : $4)
        a[FNR] = (FNR==NR ? x : a[FNR] OFS x)
    } 
    END {
        for (i=1;i<=FNR;i++) print a[i]
    }' V{1..500}

xaこれは私たちが構築するすべてのラインと新しいラインにつながるものです。どちらも割り当てを使用します。条件式FNR現在の入力ファイルの行番号とNR総行数。FNR==NR「最初のファイルを解析するとき」を意味します。また、タブで区切られた入力と出力を想定しました。

おすすめ記事