我有一个如下所示的 csv 文件:
2212,A1,
2212,A1,128
2307,B1,
2307,B1,107
如果前 2 列的值相同,我如何复制第 3 列的值来代替第 3 列中的缺失值。例如前两行的前两列相同,因此它应该自动在第一行第三列的缺失位置打印第二行第三列的值。
预期输出:
2212,A1,128
2212,A1,128
2307,B1,107
2307,B1,107
请帮忙,因为我什至想不出解决方案,而且我的文件中有数百万个这样的值..
最佳答案
如果您首先以相反的顺序排序
文件,则包含数据的行位于空行之前:
$ sort -r file
2307,B1,107
2307,B1,
2212,A1,128
2212,A1,
然后使用下面的awk
来处理sort
的输出:
$ sort -r file | awk 'NR>1 && match(prev,$0) {$0=prev} {prev=$0} 1'
2307,B1,107
2307,B1,107
2212,A1,128
2212,A1,128
关于linux - awk匹配前两列的值并在空白字段中打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39929616/