![Dividindo linhas de um arquivo txt em colunas do Excel no bash](https://rvso.com/image/1070318/Dividindo%20linhas%20de%20um%20arquivo%20txt%20em%20colunas%20do%20Excel%20no%20bash.png)
Eu tenho um arquivo de texto (lines.txt) como este:
ab.qq
1
2
3
cd.qq
3
4
5
ef.qq
7
8
9
E estou tentando passar de cada quarta linha para uma coluna diferente em um arquivo Excel/csv, basicamente o que é impresso com este script bash:
#!/bin/bash
split -l 4 lines.txt outsq
paste -d ' ' outsq*
ab.qq cd.qq ef.qq
1 3 7
2 4 8
3 5 9
Eu apreciaria alguma ajuda para escrever isso em um arquivo Excel/csv, e também qualquer outra forma que produza o resultado é definitivamente adequada (sem dividir/colar).
Responder1
O rs
(Reéhape), originalmente do BSD, é útil para esse tipo de coisa.
Por exemplo:
$ rs -e -t 4 0 < lines.txt
ab.qq cd.qq ef.qq
1 3 7
2 4 8
3 5 9
onde
-e
diz para tratar cada linha de entrada como um elemento-t
transpõe colunas para linhas4 0
gera 4 linhas e quantas colunas forem necessárias
As opções -c
e -C
definem respectivamente os caracteres separadores de entrada e saída - portanto, para saída CSV você pode usar
$ rs -etC, 4 0 < lines.txt
ab.qq,cd.qq,ef.qq,
1,3,7,
2,4,8,
3,5,9,
rs
está disponível como um pacote com o mesmo nome no universe
repositório do Ubuntu.
Alternativamente, você poderia fazer algo assim no awk:
$ awk '
{a[NR%4] = a[NR%4] == "" ? $0 : a[NR%4] "," $0}
END {for(i=1;i<=4;i++) print a[i%4]}
' lines.txt
ab.qq,cd.qq,ef.qq
1,3,7
2,4,8
3,5,9