Shell 如何将此AWK函数放入for循环中以提取列?

Shell 如何将此AWK函数放入for循环中以提取列?,shell,for-loop,multidimensional-array,awk,multifile,Shell,For Loop,Multidimensional Array,Awk,Multifile,我有几十个文件(如fA.txt、fB.txt和fc.txt),希望输出如fALL.txt所示 fA.txt: id V W X Y Z a 1 2 4 8 16 b 3 6 13 17 18 c 5 1 20 4 8 fB.txt: id F G H J K a 2 5 9 7 12 b 4 9 12

我有几十个文件(如fA.txt、fB.txt和fc.txt),希望输出如fALL.txt所示

fA.txt: id V W X Y Z a 1 2 4 8 16 b 3 6 13 17 18 c 5 1 20 4 8 fB.txt: id F G H J K a 2 5 9 7 12 b 4 9 12 3 19 c 6 13 2 40 7 fC.txt: id L M N O P a 7 2 19 8 16 b 8 6 12 23 47 c 91 11 15 19 80 desired output fALL.txt: id fA_V fB_F fC_L a 1 2 7 b 3 4 8 c 5 6 91 id fA_W fB_G fC_M a 2 5 2 b 6 9 6 c 1 13 11 id fA_X fB_H fC_N a 4 9 19 b 13 12 12 c 20 2 15 id fA_Y fB_J fC_O a 8 7 8 b 17 3 23 c 4 40 19 id fA_Z fB_K fC_P a 16 12 16 b 18 19 47 c 8 7 80 fA.txt: id V W X Y Z a 12 4 8 16 b 3 6 13 17 18 c 5 1 20 4 8 fB.txt: id F G H J K a 2 5 9 7 12 b 4 9 12 3 19 c 6 13 2 40 7 fC.txt: 我不知道 a 7 2 19 8 16 b 8 6 12 23 47 c 91 11 15 19 80 期望输出 fALL.txt: id fau_V fB_F fC_L a 12 7 b 3 4 8 c 5 6 91 id fA_W fB_G fC_M a 2 5 2 b 6 9 6 c 1 13 11 id fau_X fB_H fC_N a 4919 b 13 12 12 C20215 id fau_Y fB_J fC_O a 878 b 17 3 23 C44019 id fA_Z fB_K fC_P a 16 12 16 b 18 19 47 c 8 7 80 我在这个网站上看到了下面的AWK代码,它只适用于只有两列的输入文件。
'NR==FNR{a[FNR]=$0;next}{a[FNR]=a[FNR]of s$2}END{for(i=1;i这
gnu awk
应该适合您

cat tab.awk
开始{
OFS=“\t”

对于(i=1;i这个
gnuawk
应该适合您

cat tab.awk
开始{
OFS=“\t”

对于(i=1;我愿意回答您的问题,并感谢您在问题中分享您的努力。您能否在您的问题中(而不是在评论中)提及获得示例输出的逻辑因为不清楚您是如何获得预期输出的,谢谢。按要求添加的逻辑这仍然不清楚。我们如何将输出分割成更小的部分?显而易见的自然安排是使用一个矩阵,如果您发现要提取的新特征,您可以在其中添加更多列(或者更自然地说,是一个倒排矩阵,每个新功能添加一行,每个新文件添加一列)。欢迎使用此方法,并感谢您在问题中分享您的努力。您能否在问题中提及获得示例输出的逻辑(不在评论中)因为不清楚您是如何获得预期输出的,谢谢。按要求添加的逻辑这仍然不清楚。我们如何将输出分割成更小的部分?显而易见的自然安排是使用一个矩阵,如果您发现要提取的新特征,您可以在其中添加更多列(或者更自然地说是一个倒排矩阵,其中每个新要素添加一行,每个新文件添加一列)。我已经添加了详细的解释。我可以假设我发布的代码不容易循环,因此需要重新编写吗?我喜欢你的代码,我正在剖析它以更好地理解它。问题-如果输入文件f{a,B,C}如果有下面的格式,需要做哪些更改才能使代码正常工作?即前3行包含文件信息(只保留在所需的输出文件中一次),第4行的列标题)第1行:通用数据第2行:第3行编译:光谱耗散id fau V fB_F fC_LIf文件名只是
F{A,B,C}
及其
.txt
扩展,然后使用
fhdr[i]=ARGV[i]“quot
内部第一个for循环
for(i=1;iI添加了详细的解释。我可以假设我发布的代码不容易循环,因此需要重新编写吗?我喜欢你的代码,我正在剖析它以更好地理解它。问题-如果输入文件f{a,B,C}如果有下面的格式,需要做哪些更改才能使代码正常工作?即前3行包含文件信息(只保留在所需的输出文件中一次),第4行的列标题)第1行:通用数据第2行:第3行编译:光谱耗散id fau V fB_F fC_LIf文件名只是
F{A,B,C}
及其
.txt
扩展,然后使用
fhdr[i]=ARGV[i]“quot
内部第一个for循环
for(i=1;i
awk -f tab.awk f{A,B,C}.txt