Remover o ultimo caracter da ultima linha de uma determinada consulta.

1. Remover o ultimo caracter da ultima linha de uma determinada consulta.

Hugo César Cordeiro Gomes
hugoccgomes

(usa Ubuntu)

Enviado em 27/07/2022 - 18:01h

Boa tarde Pessoal.
Sou novo no shell e estou com dificuldade para eliminar o ultimo caracter da ultima linha em uma determinada consulta, como demonstrado abaixo:
1234567890,
0987654321,
3215465488,

Quero eliminar apenas a ultima virgula da ultima linha, sendo que independente do resulrados e quantidade de linhas que a consulta traga, preciso eliminar apenas o ultimo caracter.

1234567890,
0987654321,
3215465488

Grato pela atenção.


  


2. conctinuando

Hugo César Cordeiro Gomes
hugoccgomes

(usa Ubuntu)

Enviado em 27/07/2022 - 18:03h


Estou utilizando o comando sed, não sei se consigo com ele, pois tem a opção de excluir o ultimo caracter sendo que de todas as linhas e não apenas a ultima.
sed -r 's/$//' < 'linhas.txt'



3. Re: Remover o ultimo caracter da ultima linha de uma determinada consulta.

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 27/07/2022 - 18:51h

hugoccgomes escreveu:


Estou utilizando o comando sed, não sei se consigo com ele, pois tem a opção de excluir o ultimo caracter sendo que de todas as linhas e não apenas a ultima.
sed -r 's/$//' < 'linhas.txt'

Boa noite Hugo,
Segue:
sed -i 's/,$//' arquivo.txt 

EDITADO:
ERREI!!!!
Não me atentei ao detalhe da ultima linha.....

______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________



4. Re: Remover o ultimo caracter da ultima linha de uma determinada consulta.

Ruan
ru4n

(usa Fedora)

Enviado em 27/07/2022 - 21:48h

Para remover somente o último caractere (no caso, ",") da última linha:
sed -i '$s/,$//' arquivo.txt 



5. Re: Remover o ultimo caracter da ultima linha de uma determinada consulta.

jota
stormer

(usa Outra)

Enviado em 28/07/2022 - 02:15h


É um desperdício chamar o sed para fazer isso...

Eu faria :
var="1234567890,
0987654321,
3215465488,"

var="${var%,}"

echo "$var"





6. Re: Remover o ultimo caracter da ultima linha de uma determinada consulta.

Ruan
ru4n

(usa Fedora)

Enviado em 28/07/2022 - 08:46h

stormer escreveu:


É um desperdício chamar o sed para fazer isso...

Eu faria :
var="1234567890,
0987654321,
3215465488,"

var="${var%,}"

echo "$var"




Não seria desperdício se o conteúdo estiver em arquivo, pois o autor do post utilizou um arquivo chamado 'linhas.txt'. Nesse caso, não faz sentido usar variável pra isso.

Como não sabemos a origem desses dados, e o autor mencionou apenas um arquivo texto, a recomendação com sed faz mais sentido.


7. Re: Remover o ultimo caracter da ultima linha de uma determinada consulta.

Hugo César Cordeiro Gomes
hugoccgomes

(usa Ubuntu)

Enviado em 28/07/2022 - 10:08h


msoliver escreveu:

hugoccgomes escreveu:


Estou utilizando o comando sed, não sei se consigo com ele, pois tem a opção de excluir o ultimo caracter sendo que de todas as linhas e não apenas a ultima.
sed -r 's/$//' < 'linhas.txt'

Boa noite Hugo,
Segue:
sed -i 's/,$//' arquivo.txt 

EDITADO:
ERREI!!!!
Não me atentei ao detalhe da ultima linha.....

______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________


Grato pela atenção.



8. Re: Remover o ultimo caracter da ultima linha de uma determinada consulta.

Hugo César Cordeiro Gomes
hugoccgomes

(usa Ubuntu)

Enviado em 28/07/2022 - 10:09h


ru4n escreveu:

Para remover somente o último caractere (no caso, ",") da última linha:
sed -i '$s/,$//' arquivo.txt 



Não funcionou! Mas obrigado.



9. Re: Remover o ultimo caracter da ultima linha de uma determinada consulta.

Hugo César Cordeiro Gomes
hugoccgomes

(usa Ubuntu)

Enviado em 28/07/2022 - 10:13h


ru4n escreveu:

stormer escreveu:


É um desperdício chamar o sed para fazer isso...

Eu faria :
var="1234567890,
0987654321,
3215465488,"

var="${var%,}"

echo "$var"




Não seria desperdício se o conteúdo estiver em arquivo, pois o autor do post utilizou um arquivo chamado 'linhas.txt'. Nesse caso, não faz sentido usar variável pra isso.

Como não sabemos a origem desses dados, e o autor mencionou apenas um arquivo texto, a recomendação com sed faz mais sentido.


===============================================

Vou passar o script completo para um melhor entendimento do que desejo fazer.

#!/user/bin/env bash

file="linhas.txt"
lines=$(cat $file)
for line in $lines
do
# echo $line | awk '{printf("\"%s\"\n", $0);}'
echo $line | awk '{printf("\x27%s\x27,\n", $0);}'
sed -i '$s/,$//' linhas.txt >> não funcionou, faz a devida consulta mas não eleimina a ultima " , ".

done
~




10. Re: Remover o ultimo caracter da ultima linha de uma determinada consulta.

jota
stormer

(usa Outra)

Enviado em 28/07/2022 - 12:28h

Não tem problema nenhum o fato desses dados estarem em um arquivo.. Como ele não mencionou o tamanho do arquivo, não vi necessidade de usar sed.

Pode-se carregar o arquivo em uma variável antes:

var=$(<arquivo.txt)

echo "${var%?}" >arquivo.txt




11. Re: Remover o ultimo caracter da ultima linha de uma determinada consulta.

Hugo César Cordeiro Gomes
hugoccgomes

(usa Ubuntu)

Enviado em 28/07/2022 - 13:34h


stormer escreveu:

Não tem problema nenhum o fato desses dados estarem em um arquivo.. Como ele não mencionou o tamanho do arquivo, não vi necessidade de usar sed.

Pode-se carregar o arquivo em uma variável antes:

var=$(<arquivo.txt)

echo "${var%?}" >arquivo.txt



================

Então quer dizer que não importa a quantidade de linhas que serão inserirdas neste arquivo, a virgula será retirada sempre e apenas da umtima linha?



12. Re: Remover o ultimo caracter da ultima linha de uma determinada consulta.

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 28/07/2022 - 15:16h

hugoccgomes escreveu:


msoliver escreveu:

hugoccgomes escreveu:


Estou utilizando o comando sed, não sei se consigo com ele, pois tem a opção de excluir o ultimo caracter sendo que de todas as linhas e não apenas a ultima.
sed -r 's/$//' < 'linhas.txt'

Boa noite Hugo,
Segue:
sed -i 's/,$//' arquivo.txt 

EDITADO:
ERREI!!!!
Não me atentei ao detalhe da ultima linha.....

______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________


Grato pela atenção.

Boa tarde Hugo,
se o 'sed' que o ru4n sugeriu não funcionou, é provável que o "fim de linha" do seu arquivo está no formato "DOS".
Para verificar, faça:
file arq.txt
Se a saída for parecida com:
arq.txt: ASCII text, with CRLF, LF line terminators
Está no formato DOS, por isso o sed não funciona, pois, nesse formato,
o fim de linha é: ^M$
Para resolver, faça:
sed 's/^M//' arq.txt
OBS.: o ^M e digitado pressionando Ctrl+v Ctrl+m
------------------------------------------------------------------------------------------
Quanto ao AWK, segue:
x=$(awk 'END{print NR}' arq_lin.txt) #Pega o numero da ultima linha
#Printa a ultima linha sem a virgula no final
awk -v last=$x 'NR!=x {printf "\x27%s\x27\n" ,$0}END{sub(/,$/,"",$0);printf "\x27%s\x27\n" ,$0}' arq_lin.txt
'4708956123,7130284659,2960475318,'
'4186729305,6324957108,7029435186,'
'7409365182,8256901743,8704562139,'
'5342697018,3694781502,2630418597,'
'3709625841,4196527380,5467091328,'
'6834501792,8970516324,6315082947,'
'9450127863,5409862371,7354690182,'
'9476538210,5639482107,7249160583,'
'7094823156,8523406179,8640235971,'
'7019832564,3087612495,9028473165,'
'7019832564,3087612495,9028473165'

Também pode usar o separador de campo ","
e, na ultima linha imprimir somente os campos 1,2 e 3...
-----------------------------------------------------------------------------------------------------------------
Outra opção:

lim=$(wc -l < arq_lin.txt)
ln=0;
while read line ;do
let ln++;
(($ln<$lim)) && echo "'$line'," || echo "'${line/%,/}',";
done<arq_lin.txt





______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________




01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts