将一个文件中的一列作为最后一列添加到另一个文件中

Lve*_*ver 2 awk text-processing

我想创建一个循环,其中文本文件中的特定列(在我的例子中为第 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
Run Code Online (Sandbox Code Playgroud)

V2文本文件:

header1 header2 header3 header4
17       25       21      29 
18       26       22      30
19       27       23      31
20       28       24      32
Run Code Online (Sandbox Code Playgroud)

新文本文件:

V1 V2
13 29
14 30
15 31
16 32
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助!

tha*_*isp 5

解析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}
Run Code Online (Sandbox Code Playgroud)

x是我们从每条生产线上保留下来的东西,a也是我们建造的新生产线。两者均使用条件表达式进行赋值。FNR是当前输入文件的行号,NR总行数。FNR==NR意思是“解析第一个文件时”。我还假设了制表符分隔的输入和输出。