我正在匹配一个大csv文件和一个小csv文件之间的3列,并将它们写入输出文件。这里有很多问题是有帮助的,但我无法找到我遇到的具体问题的答案。当列条目较短时,就找不到匹配项。
我的解决方案是基于这里的解决方案:比较不同文件的两列,如果匹配则打印
匹配的列应该是small1 == large120002、small2 == large120003、small3 == large120004。
我想要的是..。
awk -F, 'NR==FNR{c[$1,$2,$3]++;next};c[$120002,$120003,$120004] > 0' small.csv large.csv > output.csv这挺管用的。这不包括large120002长度小于9个字符的int行。(到目前为止,large120002的值是7-9个字符长)。
以前遇到过这个问题吗?如果可能的话,我想坚持使用awk解决方案。
发布于 2018-04-16 20:23:35
结果发现这是一个抛出问题,所以我在列中添加了0,以确保这两个列都被awk处理得相同。
在以下帮助下:https://stackoverflow.com/questions/5808971/casting-to-int-in-awk
这个结了..。
awk -F, 'NR==FNR{c[$1+0,$2,$3]++;next};c[$120002+0,$120003,$120004] > 0' small.csv large.csv > output.csvhttps://unix.stackexchange.com/questions/438192
复制相似问题