Apagar determinada posição de um arquivo de texto. [RESOLVIDO]

1. Apagar determinada posição de um arquivo de texto. [RESOLVIDO]

Vanderlei Pereira Rodrigues
vanderleivzp

(usa CentOS)

Enviado em 12/08/2017 - 12:24h

Salve galera do Viva o Linux,
estou com uma duvida o seguinte como apagar uma posição especifica de um arquivo de texto, existente no arquivo varias linhas, queria apagar os caracteres da posição "16" de cada linha trazendo as demais para a esquerda na sua posição anterior, mesma funcionalidade do comando "BACKSPACE" do teclado mais em serie.

desde já agradeço a colaboração de todos vocês!


  


2. MELHOR RESPOSTA

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 15/08/2017 - 18:53h

vanderleivzp escreveu:

Ok, segue link do arquivo que estou tentando apagar a posição de numero 16 de todas linhas.

https://www.4shared.com/office/rw91ncfsca/arquivo.html

se alguém puder me ajudar,


Ahhhh! Agora eu entendi qual era o problema... as colunas estão separadas por "tabs" e a primeira coluna não é homogênea, não possui o mesmo número de caracteres, certo!?

Veja se agora resolve:
expand arquivo.TXT | sed 's/.//16' > arquivo2.txt 

Explicando:
O comando "expand" converte os tabs para espaços, manda a saída para o sed que deleta o 16° caractere (que é um espaço em branco) e salva o resultado no arquivo2.txt, o qual possui as colunas separadas por 2 espaços, como você queria, embora mantenha uns espaços a mais nas linhas onde o número de caracteres da primeira coluna é menor, o que mantém o alinhamento homogêneo da segunda coluna.

Era isso?

3. Re: Apagar determinada posição de um arquivo de texto. [RESOLVIDO]

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 12/08/2017 - 12:39h

sed -i.bkp 's/.//16' arquivo 



4. Re: Apagar determinada posição de um arquivo de texto. [RESOLVIDO]

Vanderlei Pereira Rodrigues
vanderleivzp

(usa CentOS)

Enviado em 14/08/2017 - 13:24h

Boa Tarde, desculpe pela demora em responder. Mesmo a linha sendo um espaço em branco usaria a mesma formula por que na deu certo com espaço em branco.


5. Re: Apagar determinada posição de um arquivo de texto. [RESOLVIDO]

Jose Renan
JoseRenan

(usa Ubuntu)

Enviado em 14/08/2017 - 14:17h

#!/bin/bash
#Use script.sh <nomearquivo>
while read linhaArquivo; do
tamanho=${#linhaArquivo}
string1=${linhaArquivo:0:15}
string2=${linhaArquivo:16:tamanho}
echo $string1$string2
done < "$1"


$ ./script.sh arquivo.txt > arquivo2.txt


6. Re: Apagar determinada posição de um arquivo de texto. [RESOLVIDO]

Vanderlei Pereira Rodrigues
vanderleivzp

(usa CentOS)

Enviado em 14/08/2017 - 15:03h

Muito Obrigado pela ajuda JoseRenan,
ao executar o script ele esta apagando mais de um espaço. Oque você acha que esta acontecendo?


7. Re: Apagar determinada posição de um arquivo de texto. [RESOLVIDO]

Jose Renan
JoseRenan

(usa Ubuntu)

Enviado em 14/08/2017 - 15:55h

Opa, tamo aí!

jose@jose:~$ cat arquivo.txt && echo && ./script.sh arquivo.txt
12345678901234567890
1234567890123456789
123456789 1234567890
123456789012345 789

1234567890123457890
123456789012345789
123456789 123457890
123456789012345789

Aqui obtive a saída correta, suprimindo o caractere nº 16 da linha (o segundo algarismo 6 e espaço da última linha).

Tente com:
#!/bin/bash
#Use leitura.sh <nomearquivo>
while read linhaArquivo; do
tamanho=${#linhaArquivo}
echo $(expr substr "$linhaArquivo" 1 15)$(expr substr "$linhaArquivo" 17 $tamanho)
done < "$1"



8. Re: Apagar determinada posição de um arquivo de texto. [RESOLVIDO]

Vanderlei Pereira Rodrigues
vanderleivzp

(usa CentOS)

Enviado em 14/08/2017 - 18:37h

JoseRenan,
Mesmo resultado Jose, vou lhe dar um exemplo:

Anteriormente.
10000002999UN 0000000001 <---- 3 espaços
10000004999UN 0000000001
10000005999UN 0000000002
10000009999UN 0000000002
10000010999UN 0000000013
apos rodar script.
10000002999UN 0000000001 <---- 1 espaço
10000004999UN 0000000001
10000005999UN 0000000002
10000009999UN 0000000002
10000010999UN 0000000013

Obs. Queria manter apenas 2 espaço.


9. Re: Apagar determinada posição de um arquivo de texto.

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 14/08/2017 - 18:39h

vanderleivzp escreveu:

Boa Tarde, desculpe pela demora em responder. Mesmo a linha sendo um espaço em branco usaria a mesma formula por que na deu certo com espaço em branco.


Velho, se você não explicar direito o que deseja, mostrando exemplos do seu arquivo, fica bem complicado de te ajudar. Aqui o comando funciona perfeitamente... no arquivo exemplo tem um espaço em branco na posição 16, o comando faz exatamente o que você pediu, se não funcionou no seu caso é porque você não está expressando corretamente o que deseja fazer!!!!

$ cat arquivo
abcdefghijklmno pqrstuwvyxz
abcdefghijklmno pqrstuwvyxz
abcdefghijklmno pqrstuwvyxz

$ sed 's/.//16' arquivo
abcdefghijklmnopqrstuwvyxz
abcdefghijklmnopqrstuwvyxz
abcdefghijklmnopqrstuwvyxz




10. Re: Apagar determinada posição de um arquivo de texto. [RESOLVIDO]

Vanderlei Pereira Rodrigues
vanderleivzp

(usa CentOS)

Enviado em 15/08/2017 - 15:52h

Ok, segue link do arquivo que estou tentando apagar a posição de numero 16 de todas linhas.

https://www.4shared.com/office/rw91ncfsca/arquivo.html

se alguém puder me ajudar,


11. Re: Apagar determinada posição de um arquivo de texto. [RESOLVIDO]

Vanderlei Pereira Rodrigues
vanderleivzp

(usa CentOS)

Enviado em 16/08/2017 - 09:46h

Bom dia, Henrique Alves!
ficou top, certinho! Sou seu fã cara vlw show de bola pareceu ate magica quando executei o comando. kkk
desde já desculpe pelos transtornos.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts