比较2个不同文件的不同列并保持awk脚本中的顺序

时间:2019-03-25 06:25:28

标签: awk

我正在尝试比较2个不同的文件,例如:

文件1:

CALL AA
CALL AB
CALL AC

文件2:

00 AB n
01 AA o
02 AC o

我期望的结果是 输出:

AA 01 o
AB 00 n
AC 02 o

如何在不更改第一个文件顺序的情况下获得此信息?(最好是在awk中)预先感谢您。

1 个答案:

答案 0 :(得分:0)

example linked above更改

awk 'NR==FNR {x=$1; $1="";a[x]=$0; next} {print $0,a[$3]}' Sourceports NATLog

awk 'NR==FNR {x=$2; $2="";a[x]=$0; next} {print $2,a[$2]}' file2 file1

输出:

AA 01  o
AB 00  n
AC 02  o

经过优化:

awk 'NR==FNR {a[$2]=$2 FS $1 FS $3; next} {print a[$2]}' file2 file1

现在输出,没有空列:

AA 01 o
AB 00 n
AC 02 o

请参阅:8 Powerful Awk Built-in Variables – FS, OFS, RS, ORS, NR, NF, FILENAME, FNR