unindo um arquivo de texto em grupos de 3 entradas

0

Eu tenho um arquivo de texto como este:

X0122
Yellow Car
$1200
YK321
Black Car
$400
BZ321132
Red Boat
$2344

todas as linhas são separadas por \n

Eu quero juntar todos os 3 elementos em uma linha separada por ; . Então, o arquivo será convertido em:

X0122;Yellow Car;$1200
YK321;Black Car;$400
BZ321132;Red Boat;$2344

Como faço isso no unix?

Observação: os arquivos podem conter letras acentuadas como á, ó, e aspas simples e são codificados em "Texto em Unicode UTF-8 em inglês, com linhas muito longas", como o comando file diz sobre eles.

    
por SpaceDog 16.05.2015 / 07:58

2 respostas

2

Você pode usar colar :

$ paste -sd';;\n' file
X0122;Yellow Car;$1200
YK321;Black Car;$400
BZ321132;Red Boat;$2344
    
por 16.05.2015 / 08:07
2

com awk :

awk 'ORS=NR%3?";":RS'

Saída:

X0122;Yellow Car;$1200
YK321;Black Car;$400
BZ321132;Red Boat;$2344

Explicação: Dependendo do número da linha, o separador de registro de saída é definido como um ponto-e-vírgula ou como uma nova linha.

    
por 16.05.2015 / 08:22