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命令更加方便。

你可能感兴趣的:(操作系统——Linux——工具)