Como mesclar dois arquivos de texto em um arquivo sem usar cat ou sed [duplicado]

24

Eu tenho dois arquivos

Arquivo1:

a
b
c

Arquivo2:

1
2
3

agora preciso combiná-los para um arquivo csv

a;1
b;2
c;3

Como os arquivos são realmente grandes, prefiro não usar cat e sed para processar o segundo arquivo. (Para arquivos menores, posso usar um script). Qualquer ideia ? awk / perl ?

    
por Sebastian Heyn 10.05.2016 / 10:28

2 respostas

42

Tente o comando paste :

paste -d';' File1 File2 > File3
    
por 10.05.2016 / 10:55
1
#!/usr/bin/awk -f
{
  w[FNR][FILENAME] = $0
}
END {
  for (x in w)
    print w[x][ARGV[1]] ";" w[x][ARGV[2]]
}

Eu também desenvolvi isso, mas ele falha devido à maneira como o Awk itera as matrizes:

#!/usr/bin/awk -f
{
  w[FNR][FILENAME] = $0
}
END {
  for (x in w) {
    y = 0
    for (z in w[x]) {
      printf w[x][z]
      printf y ? "\n" : ";"
      y = 1
    }
  }
}
    
por 11.05.2016 / 01:10