【发布时间】:2022-01-17 15:09:09
【问题描述】:
我是awk新手,希望有人能帮忙
我有 55 个文本文件(在 TAB 中并且有类似的以 .txt 结尾的命名),所有文件正好包含 55 行和 4 列。没有缺少行或列。唯一的区别是文件中的值。它们看起来类似于下面的(现在只包含 4 行和 3 个文件)
Row1 355 389 623
Row2 58 906 1373
Row3 338 3 30
Row4 2 976 0
Row1 543 31 6642
Row2 0 0 453
Row3 45 5 42
Row4 425 12 8
Row1 452 6 352
Row2 765 21 54
Row3 0 45 999
Row4 451 765 3
我想将第一列添加一次(名称),然后将所有文件中的第三列添加到一个中。 编辑:如果可能的话,文件名输出应该是这样的:
1.txt 2.txt 3.txt
Row1 389 31 6
Row2 905 0 21
Row3 3 5 45
Row4 976 12 765
我试过这个代码
paste * | awk 'FNR==NR{a[FNR]=$1; next} {print a[FNR],$3}' *.txt > output.txt | column -t
但是,它只添加前 2 个文件的值。其他文件中的值不存在。我能做些什么?谢谢!
【问题讨论】:
-
您的输入文件中使用了什么分隔符?它是 TAB 吗?
-
是的,这些文件是 TAB 文件!
-
请edit 您的问题提供minimal reproducible example 简洁、可测试的样本输入(例如,3 个文件,每行 4 行,每列 4 列)以及给定输入的预期输出,以便清楚地展示您的要求并为我们提供一些可以复制/粘贴以进行测试的内容。
-
谢谢 Ed,我改了。这些文件具有相似的命名,但都列在一个文件夹中。因此,我猜像 *.txt 这样的东西应该没问题?所有文件的行号和列号完全相同,只是其中的值不同