Por que colar o comando não funciona para Concatenar dois arquivos na coluna quando os caracteres são maiores que 511?

1

Estou usando um comando paste para concatenar dois arquivos .csv em coluna. Esses dois arquivos são enormes e quando eu executo o comando paste abaixo, onde vírgula (,) é o delimitador:

paste -d',' file1.csv file2.csv > file3.csv

O comando falha dando saída

paste: line too long

No entanto, eu procurei o mesmo pela internet e também colei o manual do comando. Eu encontrei os diagnósticos abaixo.

"line too long"         Output lines are restricted  to  511
                         characters.

Existe alguma maneira alternativa de obter o resultado, então?

Estou usando a versão abaixo do bash:

GNU bash, version 3.2.57(1)-release (sparc-sun-solaris2.10)
    
por tpsaitwal 27.12.2016 / 10:52

3 respostas

2

experimente este comando

nawk '{if ((getline a < "-") > 0) $0 = $0 "," a; print}' file1.csv < file2.csv > file3.csv

esse comando procurará seu file1.csv e file2.csv linha por linha e salvará a linha do file1.csv em $0 (para nawk $0 corresponde à linha do furo, $1 da primeira coluna, $2 o segundo ...) e salve a linha de file2.csv na variável a . Depois disso, imprimirá $0 (a linha do arquivo1), depois "," e então a (a linha do arquivo2) no file3.csv

    
por 27.12.2016 / 11:07
0

Redirecione o arquivo para um novo filehandle e leia-o enquanto lê a entrada:

#! /bin/bash
exec 3< file1
while read -r two ; do
    read -r -u3 one
    echo "$one,$two"
done < file2
    
por 27.12.2016 / 11:05
-1

O problema é que as ferramentas fornecidas pelo Solaris são inferiores às ferramentas GNU. Você deve instalá-los, se possível. Caso contrário, pode haver um melhor paste em xpg4 .

    
por 27.12.2016 / 11:06