代码之家  ›  专栏  ›  技术社区  ›  sipsorcery

使用sed合并多个csv文件

  •  4
  • sipsorcery  · 技术社区  · 14 年前

    我有3个csv文件要合并。每个文件有3个逗号分隔的列。

    File 1 has columns a,b,c
    File 2 has columns d,e,f
    File 3 has columns g,h,i
    

    我想把这3个文件合并成一个文件:

    a,b,c,e,f,h
    

    我能用sed吗?

    3 回复  |  直到 14 年前
        1
  •  9
  •   Matt Mendell    14 年前

    或者直接剪切粘贴:

    paste -d ',' file[123] | cut -d ',' -f 1,2,3,5,6,8
    
        2
  •  3
  •   codaddict    14 年前

    你可以做:

    paste file[123] | sed 's/\t/,/g' | cut -d',' -f 1,2,3,5,6,8
    
        3
  •  1
  •   sipsorcery    14 年前

    马特·孟德尔的答案很好,除非你碰巧在使用cygwin的Windows上,在这种情况下,一些恼人的行尾角色怪癖就会起作用。这取决于unix命令实用程序,在本例中是粘贴和剪切,使用\r\n作为行尾字符,而不是Windows所需的字符。

    我不能很好地解决如何更改那些util或cygwin的行尾字符,所以我很高兴能够使用sed。

    paste -d ',' file1 file2 file3 | sed 's/\r//g' | cut -d ',' -f 1,2,3,5,6,8 | sed 's/$/\r/'