removendo caractere em branco no final da linha[RESOLVIDO]

1. removendo caractere em branco no final da linha[RESOLVIDO]

Jean César
dark777

(usa Slackware)

Enviado em 28/12/2017 - 12:51h

wiki.anon

Pessoal estava fazendo um comando para remover linhas duplicadas do meu bash já que as flags
do mesmo nao funcionam tenho de gerenciar isso manualmente porem no meu arquivo bash tenho os seguintes comandos e linhas:

oprofile
oprofile
oprofile

oprofile -V
oprofile -v

eu usei o comando abaixo para remover linhas duplicadas:

bash-4.4# sort -u .bash_history > ~/saida.txt

e na saida do arquivo fica:

bash-4.4# cat saida.txt

oprofile
oprofile

oprofile -V
oprofile -v

ele remove mas acontece que ele diferencia linhas iguais mas nao trata igual a que tem um caractere em branco no final
por essa razao ele nao remove o comando que tem um caractere de espaço em branco no fim apesar do comando ser repetido.
A minha duvida é como incluir um comando nesta linha usando sed ou awk que retire caractere em branco no final da
linha e consequentemente assim entao tirando as duplicadas?




  


2. Re: removendo caractere em branco no final da linha[RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 28/12/2017 - 13:39h

dark777 escreveu:
ele remove pas acontece que ele diferencia linhas iguais mas nao trata igual a que tem um caractere em branco no final
por essa razao ele nao remove o comando que tem um caractere de espaço em branco no fim apesar do comando ser repetido.
A minha duvida é como incluir um comando nesta linha usando sed ou awk que retire caractere em branco no final da linha e
consequentemente assim entao tirando as duplicadas?


v c te resolve
sed -i 's/ *$//g' arquivo.txt 


------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------



3. Re: removendo caractere em branco no final da linha[RESOLVIDO]

Jean César
dark777

(usa Slackware)

Enviado em 28/12/2017 - 14:54h

Mauriciodez escreveu:

dark777 escreveu:
ele remove pas acontece que ele diferencia linhas iguais mas nao trata igual a que tem um caractere em branco no final
por essa razao ele nao remove o comando que tem um caractere de espaço em branco no fim apesar do comando ser repetido.
A minha duvida é como incluir um comando nesta linha usando sed ou awk que retire caractere em branco no final da linha e
consequentemente assim entao tirando as duplicadas?


v c te resolve
sed -i 's/ *$//g' arquivo.txt 


------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------



Funcionou perfeitamente mas vi que a ultima linha do bash esta em branco nao sei se isso é normal, mas testei os seguintes comandos abaixo:

sed -i '$,/^$/d' txt

e mesmo assin nao removeu a ultima linha em branco.

wiki.anon


4. Re: removendo caractere em branco no final da linha[AJUDA]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 28/12/2017 - 18:00h

dark777 escreveu:
Funcionou perfeitamente mas vi que a ultima linha do bash esta em branco nao sei se isso é normal, mas testei os seguintes comandos abaixo:

sed -i '$,/^$/d' txt

e mesmo assin nao removeu a ultima linha em branco.

wiki.anon


velho .. o comando q te passei é para remover o ultimo caractere das linhas .. aqui funcionou de boa e não rolou nada de linha em branco no final ... da uma olhada no seu TXT pra ver se essa linha em branco não é original dele !!!

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------



5. Re: removendo caractere em branco no final da linha[AJUDA]

Jean César
dark777

(usa Slackware)

Enviado em 28/12/2017 - 18:03h

Mauriciodez escreveu:

dark777 escreveu:
Funcionou perfeitamente mas vi que a ultima linha do bash esta em branco nao sei se isso é normal, mas testei os seguintes comandos abaixo:

sed -i '$,/^$/d' txt

e mesmo assin nao removeu a ultima linha em branco.

wiki.anon


velho .. o comando q te passei é para remover o ultimo caractere das linhas .. aqui funcionou de boa e não rolou nada de linha em branco no final ... da uma olhada no seu TXT pra ver se essa linha em branco não é original dele !!!

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------


vc nao me entendeu remover o ultimo caractere em branco da linha ele removeu mas ele nao remove uma linha em branco
ou seja um espaço entre uma linha e outra na quebra de linha ou uma linha em branco no fim do arquivo o comando que usei pra isso tambem nao o fez,

existe uma diferença entre um caractere no fim da linha e uma linha inteira em branco.


wiki.anon


6. Re: removendo caractere em branco no final da linha[AJUDA]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 28/12/2017 - 18:16h

dark777 escreveu:

vc nao me entendeu remover o ultimo caractere em rbanco da linha ele removeu mas ele nao remove uma linha em branco
ou seja um espaço entre uma linha e outra ou uma linha em branco no fim do arquivo o comando que usei pra isso tambem nao o fez,

existe uma diferença entre um caractere no fim da linha e uma linha inteira em branco.
wiki.anon


sed -i 's/ *$//g' txt.txt ; sed -i '/^$/d' txt.txt 


remove os espaços do final ( inclusive se houver espaços em linhas em branco ) e depois exclui as linhas em branco !!!

mauricio@phantom ~ $ cat -n txt.txt
1 Número de tabelas: 488
2 kjbcljbwjdcçl
3
4
5 lkwenfçknçlnwçrov
6
7 ewnçlnvçlnqwço
8 havfblhksbdavlkhbslkdbvl
9
10
11
12
mauricio@phantom ~ $ sed -i 's/ *$//g' txt.txt ; sed -i '/^$/d' txt.txt
mauricio@phantom ~ $ cat -n txt.txt
1 Número de tabelas: 488
2 kjbcljbwjdcçl
3 lkwenfçknçlnwçrov
4 ewnçlnvçlnqwço
5 havfblhksbdavlkhbslkdbvl
mauricio@phantom ~ $



------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------



7. Re: removendo caractere em branco no final da linha[RESOLVIDO]

Jean César
dark777

(usa Slackware)

Enviado em 28/12/2017 - 19:03h

Mauriciodez escreveu:

dark777 escreveu:

vc nao me entendeu remover o ultimo caractere em branco da linha ele removeu mas ele nao remove uma linha em branco
ou seja um espaço entre uma linha e outra ou uma linha em branco no fim do arquivo o comando que usei pra isso tambem nao o fez,

existe uma diferença entre um caractere no fim da linha e uma linha inteira em branco.
wiki.anon


sed -i 's/ *$//g' txt.txt ; sed -i '/^$/d' txt.txt 


remove os espaços do final ( inclusive se houver espaços em linhas em branco ) e depois exclui as linhas em branco !!!

mauricio@phantom ~ $ cat -n txt.txt
1 Número de tabelas: 488
2 kjbcljbwjdcçl
3
4
5 lkwenfçknçlnwçrov
6
7 ewnçlnvçlnqwço
8 havfblhksbdavlkhbslkdbvl
9
10
11
12
mauricio@phantom ~ $ sed -i 's/ *$//g' txt.txt ; sed -i '/^$/d' txt.txt
mauricio@phantom ~ $ cat -n txt.txt
1 Número de tabelas: 488
2 kjbcljbwjdcçl
3 lkwenfçknçlnwçrov
4 ewnçlnvçlnqwço
5 havfblhksbdavlkhbslkdbvl
mauricio@phantom ~ $



------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------


acho que eu entendi o que tinha no meu bash history entao nao é uma linha em branco no fim mas o tamanho do arquivo em si sem terminar o preenchimento..

fiz estes comandos para manter um bash_history saudavel coloquei no meu bashrc entao toda vez que inicio o terminal ele reconfigura o bash_history...

acho que ainda seria interessante fazer um esquema que faça um parser dos comandos entao comandos incompletos ou sem sucesso
eles tambem seriam excluidos mas por hora é isso.

# Limpa as variaveis antes de ser usadas:
unset STR_HISTORY BLANK_LNRM BLANK_INIRM BLANK_FIMRM RMDUP NEWSTORE RMFILES

# Salva saida padrao em um novo arquivo:
STR_HISTORY=${STR_HISTORY:-$(cat ~/.bash_history > str_history)}


# Remove linha em branco:
BLANK_LNRM=${BLANK_LNRM:-$(sed -i '/^$/d' str_history)}


# Remove caracteres em branco no inicio da linha:
BLANK_INIRM=${BLANK_INIRM:-$(sed -i 's/^ *//g' str_history)}


# Remove caracteres em branco no final da linha:
BLANK_FIMRM=${BLANK_FIMRM:-$(sed -i 's/ *$//g' str_history)}


# Remove linhas duplicadas
RMDUP=${RMDUP:-$(sort -u str_history > str_history2)}


# Salva os comandos devolta em .bash_history
NEWSTORE=${NEWSTORE:-$(cat str_history2 > ~/.bash_history)}

#Remove os arquivos de suporte
RMFILES=${RMFILES:-$(rm -rf str_{history,history2})}

# Limpa as variaveis usadas:
unset STR_HISTORY BLANK_LNRM BLANK_INIRM BLANK_FIMRM RMDUP NEWSTORE RMFILES
wiki.anon






Patrocínio

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

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts