Posso alterar um arquivo de texto em uma planilha com linhas de grade, usando um script bash?

3

Eu tenho as informações abaixo e quero que pareçam estar em uma planilha com um cabeçalho.

cat TEXT-FILE.txt

SOMETHING5 : 11111111 : 1969-08-12 : 42.34
SOMETHING4 : 22222222 : 1969-08-12 : 700.12
SOMETHING3 : 333333333 : 1969-08-12 : 300.2
SOMETHING2 : 44444444444 : 1969-08-12 : 200.2
SOMETHING1 : 5555555555 : 1969-08-12 : 100.34

Isso é o máximo que eu recebi com o meu script

#!/bin/bash

for file in ./TEST-FILE.txt
do
        sed -i -e "s/:/|/g" $file
        sed -i '1iIdentify | Misc | Date | Amount | Confirmation ' $file
done

A saída é agora:

Identify | Misc | Date | Amount | Confirmation
SOMETHING5 | 11111111 | 1969-08-12 | 42.34
SOMETHING4 | 22222222 | 1969-08-12 | 700.12
SOMETHING3 | 333333333 | 1969-08-12 | 300.2
SOMETHING2 | 44444444444 | 1969-08-12 | 200.2
SOMETHING1 | 5555555555 | 1969-08-12 | 100.34

Não sei ao certo como as linhas combinam, e a coluna "Confirmação" está em branco, pois essas informações serão inseridas manualmente.

Long story Long - Eu queria que essa saída parecesse uma planilha adequada, incluindo linhas de grade. Nenhuma outra pergunta que encontrei responde exatamente ao que estou tentando fazer.

    
por Emile 10.08.2018 / 18:05

1 resposta

5

I'm unsure how to make the lines match up

Dê uma olhada em column .

Arquivo original

$ cat columns.txt 
Identify | Misc | Date | Amount | Confirmation
SOMETHING5 | 11111111 | 1969-08-12 | 42.34
SOMETHING4 | 22222222 | 1969-08-12 | 700.12
SOMETHING3 | 333333333 | 1969-08-12 | 300.2
SOMETHING2 | 44444444444 | 1969-08-12 | 200.2
SOMETHING1 | 5555555555 | 1969-08-12 | 100.34

Com coluna

$ column -t columns.txt 
Identify    |  Misc         |  Date        |  Amount  |  Confirmation
SOMETHING5  |  11111111     |  1969-08-12  |  42.34
SOMETHING4  |  22222222     |  1969-08-12  |  700.12
SOMETHING3  |  333333333    |  1969-08-12  |  300.2
SOMETHING2  |  44444444444  |  1969-08-12  |  200.2
SOMETHING1  |  5555555555   |  1969-08-12  |  100.34

Como você pode ver acima, o uso da coluna faz o resultado alinhar bem, e a coluna Confirmation em branco é realmente, umm, visivelmente vazia!

Página man online aqui .

I wanted this output to look like a proper spreadsheet

Se você quiser tornar as coisas ainda mais em formato de planilha, sugiro que você verifique o Python e o beautifultable module .

Usando o acima, você pode (bastante fácil) obter a saída como:

+----------+------+--------+
|   name   | rank | gender |
+----------+------+--------+
|  Jacob   |  1   |  boy   |
+----------+------+--------+
| Isabella |  1   |  girl  |
+----------+------+--------+
|  Ethan   |  2   |  boy   |
+----------+------+--------+
|  Sophia  |  2   |  girl  |
+----------+------+--------+
| Michael  |  3   |  boy   |
+----------+------+--------+
    
por 10.08.2018 / 18:14

Tags