Descaracterizar arquivo posicional [RESOLVIDO]

1. Descaracterizar arquivo posicional [RESOLVIDO]

Tiago Chaves Pinheiro Gavazza
tiagocp

(usa Red Hat)

Enviado em 11/12/2020 - 12:06h

Galera bom dia,
Estou tentando descaracterizar um arquivo posicional para posterior transmissão em shell script e preciso de uma ajuda!!

Tenho um arquivo posicional de 1000 caracteres e da posição 11 até a 100, 300 até 350 e 600 até o fim do arquivo preciso substituir a informação por espaço em branco.
Tentei utilizar o SED mas tenho batido a cabeça para substituir os espaços em branco.

Segue o comando mas não tenho tido o resultado esperado ainda.

sed -i -r 's/(^.{10})(.{90})(.{200})(.{50})(.{250})(.*$)/\1(\s{90})\3(\s{50})\5/g' Arquivo.txt

É possível fazer isso?

Desde já agradeço a ajuda.


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 12/12/2020 - 23:57h


tiagocp escreveu:

Galera bom dia,
Estou tentando descaracterizar um arquivo posicional para posterior transmissão em shell script e preciso de uma ajuda!!

Tenho um arquivo posicional de 1000 caracteres e da posição 11 até a 100, 300 até 350 e 600 até o fim do arquivo preciso substituir a informação por espaço em branco.
Tentei utilizar o SED mas tenho batido a cabeça para substituir os espaços em branco.

Segue o comando mas não tenho tido o resultado esperado ainda.

sed -i -r 's/(^.{10})(.{90})(.{200})(.{50})(.{250})(.*$)/\1(\s{90})\3(\s{50})\5/g' Arquivo.txt

É possível fazer isso?

Desde já agradeço a ajuda.

Boa noite.
segue sugestão com o gawk:
Se, tem um arquivo de 1000 caracteres, e serão eliminados os caracteres:
11 a 100, 300 a 350 e 600 a 1000.
O seu arquivo tem "6 campos"
Com os tamanhos:
"10 90 200 50 250 400"
awk 'BEGIN{FIELDWIDTHS="10 90 200 50 250 400"} {gsub(".", "#", $2);gsub(".", "#", $4);gsub(".", "#", $6);printf "%s%s%s%s%s%s\n" ,$1,$2,$3,$4,$5,$6}' 1000zeros 

1111111111##########################################################################################00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000##################################################0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000################################################################################################################################################################################################################################################################################################################################################################################################################
Obs.: Gerei um arquivo com 1000 Zeros para efetuar os testes, e troquei o "0" por "#"


______________________________________________________________________
Importante: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p'
Att.: Marcelo Oliver
______________________________________________________________________
Nota de esclarecimento:
O comando: lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p',
faz parte da minha assinatura.
O qual, "filtra" a página: "https://www.vivaolinux.com.br/termos-de-uso/",
Mostrando o seguinte:

Se você sanou sua dúvida ou resolveu um problema a partir de um
tópico criado, é extremamente recomendável que acesse o tópico e
marque-o como "RESOLVIDO". E mais recomendável ainda que você eleja
como melhor resposta a que mais lhe ajudou.


______________________________________________________________________


3. Re: Descaracterizar arquivo posicional

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 12/12/2020 - 08:26h

v aí se com esse exemplo vc consegue adaptar,

substitui do 1º ao 14º por '#'

mauricio@phantom ~ $ echo "UmaVezFlamengoSempreFlamengo" | sed 's/^.\{1,14\}/#/'
#SempreFlamengo
mauricio@phantom ~ $



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

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

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




4. Re: Descaracterizar arquivo posicional [RESOLVIDO]

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 14/12/2020 - 17:54h


tiagocp escreveu:

Galera bom dia,
Estou tentando descaracterizar um arquivo posicional para posterior transmissão em shell script e preciso de uma ajuda!!

Tenho um arquivo posicional de 1000 caracteres e da posição 11 até a 100, 300 até 350 e 600 até o fim do arquivo preciso substituir a informação por espaço em branco.
Tentei utilizar o SED mas tenho batido a cabeça para substituir os espaços em branco.

Segue o comando mas não tenho tido o resultado esperado ainda.

sed -i -r 's/(^.{10})(.{90})(.{200})(.{50})(.{250})(.*$)/\1(\s{90})\3(\s{50})\5/g' Arquivo.txt

É possível fazer isso?

Desde já agradeço a ajuda.


Tiago, obrigado pela Melhor Resposta.
Segue uma opção com sed, "meia maluca", mas funciona....
linha(){ printf '%*s' "$1" | sed "s/ /#/g";}
sed -r 's/^0{10}/& /;s/ 0{90}/'$(linha 90)'/;s/0{200}/& /;s/ 0{50}/'$(linha 50)' /;s/ 0{250}/& /;s/ 0{400}/'$(linha 400)'/' 1000_carac|sed 's/ //g;s/#/ /g'
0000000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000


______________________________________________________________________
Att.: Marcelo Oliver








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts