excel - 用 awk 实现类似 Excel-vlookup 的函数

标签 excel linux bash awk vlookup

我有一个关于 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/

相关文章:

python - 将直方图从 Python 导出到 Excel

excel - 如何停止网络浏览器

linux - 我将整数添加到 resb 错误吗?以及如何纠正?

bash - 虽然阅读速度非常慢

bash - 你能为整个 Bash session 重定向 STDERR 吗?

excel - 使用 INDEX/MATCH 进行三维查找

asp.net-mvc - ASP.NET MVC : Downloading an excel file

linux - Ctrl+C(/Z) 不适用于 konsole、KDE,但适用于终端

php - 在 PHP 中使用 SimpleXml 函数时,XML 文件内容未显示在 apache2 本地主机上

bash - Imagemagick recognize -verbose 报告的文件大小与 ls -l 截然不同