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
______________________________________________________________________