我有一个关于 awk 的 vlookup 函数实现的问题。我有一个像这样的 id-score 对的 csv 文件(比如 1.csv):
id,score
1,16
3,12
5,13
11,8
13,32
17,37
23,74
29,7
31,70
41,83
有“未得分”的人。我还有一个 csv 文件,包括所有注册的球员,包括得分和未得分的球员(比如 2.csv)(我因空间不足而转置)
id,1,3,5,7,11,13,17,19,23,29,31,37,41
我想根据第二个 csv 文件生成 id-score 对,以便包括得分和未得分的人。对于未得分的人,将使用 NAN 代替数字。
换句话说,最终的结果是这样的:
id,score
1,16
3,12
5,13
7,NAN
11,8
13,32
17,37
19,NAN
23,74
29,7
31,70
37,NAN
41,83
当我尝试使用以下 awk
命令创建新表时,它对我不起作用。在此先感谢您的任何建议。
awk 'FNR==NR{a[$1]++;下一个} {打印 $0, (a[$1]) ? a[$2] : "NAN"}' 1.csv 2.csv
最佳答案
这是你的修复脚本:设置字段分隔符;保存每个id的score值;如果缺少 NaN,则打印查找的值
$ awk 'BEGIN {FS=OFS=","}
FNR==NR {a[$1]=$2; next}
{print $1, (($1 in a)?a[$1]:"NAN")}' file1 file2
id,score
1,16
3,12
5,13
7,NAN
11,8
13,32
17,37
19,NAN
23,74
29,7
31,70
37,NAN
41,83
关于excel - 用 awk 实现类似 Excel-vlookup 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63588601/