Alinhar o ultimo carácter do arquivo (com espaços)

1. Alinhar o ultimo carácter do arquivo (com espaços)

Alexandre Jose da Costa
alexandre_jcosta

(usa Outra)

Enviado em 29/06/2020 - 15:07h

Boa tarde, Colaboradores.

Como sou novo utilizando shell, algumas coisas ainda são bem complexas para mim.

Estou com o seguinte problema. Tenho um arquivo onde todas as linhas deveram ter o mesmo tamanho, mesmo que os últimos caracteres estejam em branco (ultimo carácter alinhado).

Obs.: Vou interpretar o ultimo carácter com a barra (/)

Exemplo Atual:

João da Silva\
Maria da Conceição da Costa\
Joana Darc\
Marechal Deodoro da Fonseca de Alcântara Machado Oliveira\

Exemplo Desejado:

João da Silva \
Maria da Conceição da Costa \
Joana Darc \
Marechal Deodoro da Fonseca de Alcântara Machado Oliveira \

Todas as linhas com mesmo tamanho mesmo que preenchido com espaços em branco.
Alguém pode me ajudar.



  


2. Re: Alinhar o ultimo carácter do arquivo (com espaços)

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 29/06/2020 - 15:28h


alexandre_jcosta escreveu:

Boa tarde, Colaboradores.

Como sou novo utilizando shell, algumas coisas ainda são bem complexas para mim.

Estou com o seguinte problema. Tenho um arquivo onde todas as linhas deveram ter o mesmo tamanho, mesmo que os últimos caracteres estejam em branco (ultimo carácter alinhado).

Obs.: Vou interpretar o ultimo carácter com a barra (/)

Exemplo Atual:

João da Silva\
Maria da Conceição da Costa\
Joana Darc\
Marechal Deodoro da Fonseca de Alcântara Machado Oliveira\

Exemplo Desejado:

João da Silva \
Maria da Conceição da Costa \
Joana Darc \
Marechal Deodoro da Fonseca de Alcântara Machado Oliveira \

Todas as linhas com mesmo tamanho mesmo que preenchido com espaços em branco.
Alguém pode me ajudar.

Boa tarde Alexandre.
se quer o ultimo caractere com um espaço vazio,
faça:
sed -i 's/$/ /' nomes.txt
Para verificar se está certo:
cat -vet nomes.txt
...
Joana Darc $


______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________


3. Re: Alinhar o ultimo carácter do arquivo (com espaços)

Gabriel
rabbit

(usa Debian)

Enviado em 29/06/2020 - 20:15h



Neste livro diz que Open Source Development Labs Inc paga para ele um salário de US$ 200.000.
E que o conselho é responsável por arrecadar US$ 10 mi para proteger os consumidores.

"A Open Source Development Labs Inc, paga-lhe um salário de cerca de US$ 200 mil."


Acho um valor justo, e ele deve ter diversos investimentos, imóveis e etc.

x.x
run rabbit run


4. Re: Alinhar o ultimo carácter do arquivo (com espaços)

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 29/06/2020 - 20:28h


rabbit escreveu:



Neste livro diz que Open Source Development Labs Inc paga para ele um salário de US$ 200.000.
E que o conselho é responsável por arrecadar US$ 10 mi para proteger os consumidores.

"A Open Source Development Labs Inc, paga-lhe um salário de cerca de US$ 200 mil."


Acho um valor justo, e ele deve ter diversos investimentos, imóveis e etc.

x.x
run rabbit run

Boa noite rabbit.
"Parece" que postou no lugar errado, parece . . . . kkkkkkk


______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________


5. Re: Alinhar o ultimo carácter do arquivo (com espaços)

Fábio Berbert de Paula
fabio

(usa Debian)

Enviado em 30/06/2020 - 07:30h

Pelo que entendi você quer isso:

Dado o arquivo nomes.txt, descobrir a linha com maior número de colunas:

$ wc -L nomes.txt
68 nomes.txt

Retornou 68. Agora basta usar o sed:

$ sed ':a ; /.\{68\}/!{ s/$/ / ; ba}' nomes.txt

Retorno será todas as linhas com 68 colunas, onde as que tinham menos recebem o preenchimento de espaços em branco à direita.

Colocando tudo num shell script (se alguém tiver alguma solução mais elegante para substituir o número de colunas usado no sed por uma variável, sou todo ouvidos kkk. Minha solução foi armazenar o comando em uma variável e depois executar).

#!/bin/bash

FILE="nomes.txt"
COLS=$(wc -L ${FILE}|cut -d ' ' -f 1)
CMD="sed ':a ; /.\{${COLS}\}/!{ s/$/ / ; ba}' ${FILE}"
eval "$CMD"



6. Re: Alinhar o ultimo carácter do arquivo (com espaços)

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 01/07/2020 - 19:13h

fabio escreveu:

Pelo que entendi você quer isso:

Dado o arquivo nomes.txt, descobrir a linha com maior número de colunas:

$ wc -L nomes.txt
68 nomes.txt

Retornou 68. Agora basta usar o sed:

$ sed ':a ; /.\{68\}/!{ s/$/ / ; ba}' nomes.txt

Retorno será todas as linhas com 68 colunas, onde as que tinham menos recebem o preenchimento de espaços em branco à direita.

Colocando tudo num shell script (se alguém tiver alguma solução mais elegante para substituir o número de colunas usado no sed por uma variável, sou todo ouvidos kkk. Minha solução foi armazenar o comando em uma variável e depois executar).

#!/bin/bash

FILE="nomes.txt"
COLS=$(wc -L ${FILE}|cut -d ' ' -f 1)
CMD="sed ':a ; /.\{${COLS}\}/!{ s/$/ / ; ba}' ${FILE}"
eval "$CMD"


Boa noite Fábio,
Gostei desse "sed", Rsrsrsr.
Só um detalhe em relação ao "wc",
Redirecionando a entrada padrão, não é necessário o "cut":
COLS=$(wc -L < ${FILE}).
Tudo em uma linha....
sed -r ':a;/.{'$(wc -L < nomes.txt)'}/!{s/$/ /;ba}' nomes.txt 


Att.: Marcelo Oliver
______________________________________________________________________






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts