【发布时间】:2017-07-20 08:27:21
【问题描述】:
文件 A 有以下 3 列: AccountNumber、CustomerName、余额
文件 B 有以下 5 列 SystemID、AccountNumber、Product、OpenDate
我正在使用下面的 AWK 代码来连接这两个文件。它不工作
FNR==NR{a[$1]=$0;next}$2 in a{ print $0, a[$1]}
这两个文件的组合输出预期如下 SystemID、AccountNumber、Product、OpenDate、CustomerName、Balance
仅在 AWK 代码中请求帮助。我知道通过 SORT 和 JOIN 可以使用类似的功能,但我只在寻找 AWK 解决方案。
档案一: +---------------+---------------+----------+ |帐号 |客户姓名 |余额 | +---------------+---------------+----------+ | 3 | C | 100 | | 4 |一个 | 200 | | 5 |乙| 300 | +---------------+---------------+----------+ 文件 B: +-----------+----------------+----------+--------- -----+ |系统ID |帐号 |产品 |开幕日期 | +-----------+----------------+----------+--------- -----+ | 1 | 6 |研发 | 12-05-17 | | 2 | 4 |某人 | 17 年 5 月 15 日 | | 3 | 3 |道明 | 02-04-17 | | 4 | 5 |某人 | 15-01-17 | +-----------+----------------+----------+--------- -----+ 加入后的输出: +-----------+----------------+----------+--------- -----+--------------+----------+ |系统ID |帐号 |产品 |开幕日期 |客户姓名 |余额 | +-----------+----------------+----------+--------- -----+--------------+----------+ | 2 | 4 |某人 | 17 年 5 月 15 日 |一个 | 200 | | 3 | 3 |道明 | 02-04-17 | C | 100 | | 4 | 5 |某人 | 15-01-17 |乙| 300 | +-----------+----------------+----------+--------- -----+--------------+----------+【问题讨论】:
-
请发布示例输入。同样在
print $0, a[$1]中,索引应该是$2? -
更新了样本输入。
-
@user1955215:你为什么要使用
awk?文件是否带有|、-----------和+符号?您希望 awk 对这些字符进行限制吗?以这种方式格式化输出在 awk 中并不简单 -
您希望第二个循环中的
a[$2]引用第二个字段。投票结束是一个琐碎的错字。 -
...不过,除此之外,您将希望在第一个循环中仅捕获
$2和$3而不是所有$0,以准确获取您正在寻找的输出。
标签: awk