Você está procurando o utilitário paste
, por exemplo,
paste *.txt > file.txt
Verifique sua página de manual para obter detalhes, principalmente a opção -d
para especificar o delimitador.
Eu tenho .txt
de dados do espectrômetro com 800 linhas e 5 colunas. E eu quero mesclar cerca de 15 desses arquivos ao lado do outro. Então, o arquivo .txt
final deve ter 800 linhas e 75 colunas.
Todos os arquivos .txt
são assim:
Wave ;Sample ;Dark ;Reference;Absorbance
[nm] ;[counts] ;[counts] ;[counts] ;[A.U]
200.00; 34.647; -0.317; 79.668; 0.35734
201.00; 29.937; -21.220; 70.385; 0.25357
202.00; 48.826; -0.527; 99.657; 0.30721
203.00; 43.201; 4.165; 136.775; 0.53103
...
Arquivo desejado:
Wave ;Sample ;Dark ;Reference;Absorbance; Wave ;Sample ;Dark ;Reference;Absorbance
[nm] ;[counts] ;[counts] ;[counts] ;[A.U]; [nm] ;[counts] ;[counts] ;[counts] ;[A.U]
200.00; 34.647; -0.317; 79.668; 0.35734; 200.00; 34.647; -0.317; 79.668; 0.35734;
201.00; 29.937; -21.220; 70.385; 0.25357; 201.00; 29.937; -21.220; 70.385; 0.25357
202.00; 48.826; -0.527; 99.657; 0.30721; 202.00; 48.826; -0.527; 99.657; 0.30721
203.00; 43.201; 4.165; 136.775; 0.53103; 203.00; 43.201; 4.165; 136.775; 0.53103
Eu tentei:
cat *.txt > file.txt
Mas isso adiciona .txt
arquivos como novas linhas, não como novas colunas.
Você está procurando o utilitário paste
, por exemplo,
paste *.txt > file.txt
Verifique sua página de manual para obter detalhes, principalmente a opção -d
para especificar o delimitador.
Eu defino o separador como 'espaço' e elimino vários espaços.
$ cat file-1
ett tu tre
1 2 3
11 22 33
$ cat file-2
fyra fem sex
4 5 6
44 55 66
$ cat file-3
sju atta nio
7 8 9
77 88 99
$ paste file-?
ett tu tre fyra fem sex sju atta nio
1 2 3 4 5 6 7 8 9
11 22 33 44 55 66 77 88 99
$ paste -d ' ' file-?
ett tu tre fyra fem sex sju atta nio
1 2 3 4 5 6 7 8 9
11 22 33 44 55 66 77 88 99
$ paste -d ' ' file-? | tr -s ' ' ' '
ett tu tre fyra fem sex sju atta nio
1 2 3 4 5 6 7 8 9
11 22 33 44 55 66 77 88 99
Talvez você queira eliminar os espaços? Você quer manter o ponto-e-vírgula como separador. Tente com a seguinte linha de comando
paste -d ';' input-filespec-with-wildcard | sed 's/ //g' > output-file
em que input-filespec-with-wildcard
poderia ser *.txt
(se os arquivos a serem mesclados forem os únicos arquivos txt
no diretório).
Converta os arquivos para o formato de texto unix / linux, CarriageReturn + LineFeed
- > LineFeed
com dos2unix
Remova linhas em branco com o seguinte comando
for i in *.TXT;do echo sed '/^$/'d "$i" > "${i/.TXT/.txt}";done
Remova as linhas de cabeçalho com o seguinte comando
for i in *.txt;do grep ';*;' "$i" > "${i/.txt/.txt1}";done
(as linhas do cabeçalho não contêm pelo menos dois ponto e vírgulas.)
Mesclar os arquivos com o seguinte comando
paste -d ';' *.txt1 | sed 's/ //g' > merged-file.txt
Eu li o arquivo mesclado no LibreOffice Calc e usei ponto-e-vírgula como separador. Parece que eu acho que você quer ter. Espero que funcione para você de acordo com essas instruções. Caso contrário, por favor, descreva o seu problema restante e diga-me se você quer que eu faça o upload de 'meu' merged-file.txt
.
Se você quiser fazer isso apenas uma vez, faça manualmente / visualmente no Libre Office Calc, colando os arquivos na planilha. Você pode editar as posições na planilha e remover as linhas, o que cria confusão.
Eu diria que é bastante fácil fazê-lo manualmente no LibreOffice Calc, mas se isso é algo que você fará muitas vezes ou com um grande número de arquivos, é melhor usar e talvez refinar o método de linha de comando .