bash - 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 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
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
推荐阅读
- php - 为什么无法使用 echo 正确打印表格?
- windows - 如何将我的 Active Directory 用户从 google.com 重定向到我的网络服务?
- version-control - 如何审查移动大块代码的提交?
- jquery - 如何仅使用一个日历使用 daterangepicker
- html - css flex 左边一项和右边两项在彼此下方
- reactjs - 材质界面
onChange 传递变量 - c# - 包含路径表达式必须引用定义的导航属性
- android - 使用背景图片时应用程序崩溃
- git - 如何从映射的网络驱动器加速 git fetch
- python-3.x - 在cartopy中等效的makegrid,从底图移动到cartopy