将每个 .txt 文件中的所有数据整理成一个结果文件

将每个 .txt 文件中的所有数据整理成一个结果文件

我有~2000 个 .txt 文件,每个文件包含与此示例类似的三列,其中每个文件中的第 1-2 列相同:

A   Func1   6
B   Func1   5
C   Func1   17
D   Func1   47
E   Func1   37
F   Func1   42
G   Func1   22
H   Func1   13
I   Func1   81

我想将每个 .txt 文件中的所有数据整理到一个结果文件中。我只需要第 3 列的数据,并将其按行排列到每个文件中。我还需要第一列中的文件名:

file_name   A  B  C  D  E  F  G  H  I
file1.txt   6  5  17 47 37 42 22 13 81
file2.txt   8  12 22 84 1  43 54 90 10
...

谢谢!

答案1

使用 awk 和 shell 循环paste

for f in *.txt
do
    printf "%s\t" "$f"   # print filename
    awk '{print $3}' "$f" | paste -s  # take third column and transpose
done

输出如下:

file1.txt   6   5   17  47  37  42  22  13  81
file2.txt   12  11  77  107 97  102 82  73  141

标题行可以从任何文件生成:

printf "%s\t" "file_name"
awk '{print $1}' file1.txt | paste -s

相关内容