我有文件 a 和文件查找,结构如下。
vi a.txt
empid|ename|sal_grade|MANAGER_ID
1|raj|A|202
2|MAN|B|203
3|JOS|C|204
vi lookup.txt
Grade|sal|manager_id
A|$100000|202
A|$1000|099
B|$1000000|203
B|$100|011
Output:
1|raj|A|202
2|MAN|B|203
command:
awk 'BEGIN {FS=OFS="|"} NR==FNR{a[$1];next} $3 in a{print $0}' lookup.txt a.txt >matched.txt
在这两个文件中,等级和manager_id都很常见,我想将a.txt与lookup.txt加入等级和manager_id,并从a.txt中获取数据,其中它从lookup.txt中获得匹配项。我尝试使用以下命令但它只会加入列,即等级列,但我需要加入等级和经理 ID 列。
提前致谢。
答案1
如果您需要组合密钥,请构建组合密钥。
awk '
BEGIN { FS=OFS="|" }
NR==FNR { a[$1 "-" $3]; next }
($3 "-" $4) in a { print $0 }
' lookup.txt a.txt > matched.txt
您可以"-"
用作分隔符,或其他字符串,或什么都不用。使用示例中的数据,无需分隔符即可工作。