Seus arquivos de entrada têm DOS \r\n
finais de linha. Remova os retornos de carro com o comando dos2unix
ou com sed -i 's/\r$//'
Eu estou tentando mesclar três arquivos usando 'colar' e 'awk'. No entanto, as colunas não estão se ajustando à sequência de caracteres mais longa. Todos os arquivos são formatados da mesma maneira como abaixo.
Abaixo está o meu código defeituoso.
$ paste <(awk '{print $1}' lineid) <
(awk '{printf("%-13.10s\n", $1)}' gge0001x) <
(awk '{printf("%-13.10s\n", $1)}' gge0001y) <
(awk '{printf("%-13.10s\n", $1)}' gge0001z)
Este código resulta em colunas desalinhadas conforme ilustrado abaixo.
Arquivodeentrada1
FDTSBMPQRUXAGHOCKWL
Arquivodeentrada2
gge0006x12-30-200614:05:23a6915.4gge0600130.819.21006.21012.736.238.994107.718.41137.0847.53728.198212.5268.1
Arquivodeentrada3
gge0006y12-30-200614:05:55a6915.3gge0600130.621.11006.61014.636.138.994107.718.43336.7057.62127.623210.5168
Arquivodeentrada4
gge0006z12-30-200614:06:28a6915.7gge0600130.323.510081014.136.638.994107.718.43436.5087.54627.574208.0867.6
Resultadosparapastefile1file2file3file4|column-t
O comando paste
separa entradas com tabulações, que são então interpretadas como um número variável de espaços na exibição. Se sua entrada já estiver preenchida com espaço em branco, você pode tentar excluir as guias da saída de paste
, com | tr -d '\t'
ou transformar cada guia em um único espaço, com | tr '\t' ' '
(no meu sistema, o primeiro pode ser alcançado usando paste -d ''
, mas não sei se isso é portável, e o segundo pode ser alcançado com paste -d ' '
; dizendo paste
para usar espaços como delimitadores).