我有一个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
文件,则包含数据的行位于空行之前:
$ 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/