![将每个 .txt 文件中的所有数据整理成一个结果文件](https://linux22.com/image/902085/%E5%B0%86%E6%AF%8F%E4%B8%AA%20.txt%20%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%E6%95%B0%E6%8D%AE%E6%95%B4%E7%90%86%E6%88%90%E4%B8%80%E4%B8%AA%E7%BB%93%E6%9E%9C%E6%96%87%E4%BB%B6.png)
我有~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