awk合并文件实例以及命令解释

一、awk合并文件

1.1 实例

[root@tech tmp]# cat account
a|000002
b|000001
c|000003
d|000004
[root@tech tmp]# cat cdr
000001|20
000002|45
000003|25
000004|60
要合并这两个文件,可以使用如下命令:
awk -F | ‘NR==FNR { a[$1]=$2; next } { print $0"|"a[$2] }’ cdr account
运行结果是:
a|000002|45
b|000001|20
c|000003|25
d|000004|60

1.2 命令解释

当NR=FNR为真时,判断当前读入的是第一个文件account,然后使用{ a[$1]=$2; next }循环将cdr文件的每行记录都存入数组a,并使用cdr文件第1个字段作为下标引用.

当NR=FNR为假时,判断当前读入了第二个文件account,然后跳过{ a[$1]=$2; next },对第二个文件account的每一行都无条件执行{ print $0"|"a[$2] },此时变量$2为第二个文件的第二个字段,与读入第一个文件时,采用第一个文件第一个字段$1为数组下标相同.因此可以在此使用a[$2]引用数组。

1.3 场景描述

这种用法主要用于文件记录没有排序,或者需要匹配的字段不是第一个字段的情况下。

对于文件已经有序,且两个文件的匹配字段都是第一列的场景,使用join命令更加方便。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值