Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash AWK比较来自不同文件的两列并合并输出_Bash_File_Awk - Fatal编程技术网

Bash AWK比较来自不同文件的两列并合并输出

Bash AWK比较来自不同文件的两列并合并输出,bash,file,awk,Bash,File,Awk,我需要帮助:) 我有两个文件(都很大) 文件1: 1a04 1a04 9 161.9 10 143.5 11 146.8 12 111.5 13 100.2 14 75.2 15 46.1 16 90.3 17 93.3 18 119.9 19 178.9 20 171.4 21 168.4 22 169.0 23 176.4 24 167.0 25 164.5 文件2 1a04 1a04 5 0 6 - 7 E 8 E 9

我需要帮助:) 我有两个文件(都很大)

文件1:

1a04    1a04
9   161.9
10  143.5
11  146.8
12  111.5
13  100.2
14  75.2
15  46.1
16  90.3
17  93.3
18  119.9
19  178.9
20  171.4
21  168.4
22  169.0
23  176.4
24  167.0
25  164.5
文件2

1a04    1a04
5   0
6   -
7   E
8   E
9   E
10  E
11  E
12  E
13  -
14  S
15  >>
16  H
17  H
18  H
19  H
20  H
我想比较两个文件的前几列,如果它们匹配,将它们合并到一个新文件中。 因此,我需要的理想输出是:

1a04  1a04  1A04
9   161.9  E
10  143.5  E
11  146.8  E
12  111.5  E
13  100.2  -
14  75.2   S
15  46.1   >>
16  90.3   H
17  93.3   H
18  119.9  H
19  178.9  H
20  171.4  H
我尝试了多个awk组合,但无法获得所需的确切输出
感谢您的帮助

使用2阶段
awk
这将是:

awk 'FNR == NR { map[$1]=$2; next} $1 in map { print $0, map[$1] }' file2 file1 |
column -t

考虑(POSIX)命令而不是<代码> AWK<代码>。假设文件
file1
file2
按排序,
join-o 1.1,1.2,2.2 file1 file2
。如果它们没有按顺序排序,请先对它们进行排序,或者使用:
join-o1.1,1.2,2.2您好,谢谢您的回复,我无法对它们进行排序,不幸的是,这就是我寻找的原因和awk解决方案。您为什么不能对它们进行排序?给定示例数据,显示的
join
命令生成您想要的输出-给出或获取列之间的间距(这是不稳定的,因此非常难以精确复制)。重复问题我不能,因为我在文件中有多个标题行(例如:1a04 1a04),当我尝试join命令时会被删除。谢谢,我试过你的建议,但对我来说似乎不起作用
1a04 1a04 1a04 1a04 9 161.9 S 10 143.5 G 11 146.8 G 12 111.5 G 13 100.2 S 14 75.2>15 46.1 H 16 90.3 H 17 93.3 H 18 119.9 H 19 178.9 H 20 171.4 H 21 168.4 T 22 169.0 T 23 176.4 T 24 167.0 T 25 164.5 S
示例文件的输出附在答案中,是否与预期输出不匹配?检查输入文件,确保两个文件都有两列,并且其中任何一列都没有DOS行结尾。是的,当我尝试将其扩展到整个文件时,输出是完全不同的(我只附上了部分示例文件)。然后提供一个有问题的实际数据的小示例。如果不看到实际数据,我就猜不出一个解决方案。@Fede:Hmmm-34 MiB左右的两个文件中的数据。没有任何错误的解释。这使得帮助你变得有点棘手。您应该创建一个MCVE(-或MRE或现在使用的任何名称)或SSCCE()。您可能仍然需要一个外部站点来承载数据,但不应该用34个MiB来显示问题。
1a04  1a04   1a04
9     161.9  E
10    143.5  E
11    146.8  E
12    111.5  E
13    100.2  -
14    75.2   S
15    46.1   >>
16    90.3   H
17    93.3   H
18    119.9  H
19    178.9  H
20    171.4  H