我有~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