substring de tras para frente

1. substring de tras para frente

Felipe Duran de Aquino
Felipe09

(usa Outra)

Enviado em 01/06/2021 - 17:56h

Fala galera,

Estou tentando fazer uma substring em um campos do meu arquivo mas de tras para frente. Eu não sei a sintaxe alguém consegue ajudar?

presisava pegar os 9 caracteres de tras para frente.

210045998872732
2104344999938960
2104314991206840
21901544988167800






  


2. Re: substring de tras para frente

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 02/06/2021 - 15:21h


echo "2021123456789" | awk '{ print substr( $0, length($0) - 8, length($0) ) }' 


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

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

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




3. Re: substring de tras para frente

Osama Jr.
/bin/laden

(usa Void Linux)

Enviado em 02/06/2021 - 15:36h

var=2021123456789
echo ${var:(-9)}
123456789


Pra ler linha a linha usando o próprio Bash:

#!/usr/bin/env bash
arquivo='/tmp/dados.txt'

while IFS= read -r i; do
echo "${i:(-9)}"
done < "$arquivo"


---
echo 1244394795515721490698P | dc


4. Re: substring de tras para frente

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 02/06/2021 - 17:14h

Felipe09 escreveu:

Fala galera,

Estou tentando fazer uma substring em um campos do meu arquivo mas de tras para frente. Eu não sei a sintaxe alguém consegue ajudar?

presisava pegar os 9 caracteres de tras para frente.

210045998872732
2104344999938960
2104314991206840
21901544988167800

presisava pegar os 9 caracteres de tras para frente.

Ao meu entender, de trás para frente., é inverso ou ao contrário, logo:
var='210045998872732'
echo $var|rev
Para "pegar" os nove caracteres,
só usar o "bash".
----------------------------------------------------------------------------------
var='abcdefg123456789'
var00=${var:0:$((${#var}-9))}
echo "${var00}$(rev <<< ${var:(-9)})"
abcdefg987654321
Com awk:
var01=$(awk -F "" '{for(n=NF;n>0;n--)printf "%s" ,$n}' <<< "${var:(-9)}")
echo ${var00}${var01}
abcdefg987654321
Se, é somente inverter a ordem.....colocando os nove caracteres finais, no início....
echo "${var:(-9)${var00}}"
-----------------------------------------------------------------------------------------------------------


5. Re: substring de tras para frente

Osama Jr.
/bin/laden

(usa Void Linux)

Enviado em 03/06/2021 - 00:22h


msoliver escreveu:


Felipe09 escreveu:

Fala galera,

Estou tentando fazer uma substring em um campos do meu arquivo mas de tras para frente. Eu não sei a sintaxe alguém consegue ajudar?

presisava pegar os 9 caracteres de tras para frente.

210045998872732
2104344999938960
2104314991206840
21901544988167800

presisava pegar os 9 caracteres de tras para frente.

Ao meu entender, de trás para frente., é inverso ou ao contrário, logo:
var='210045998872732'
echo $var|rev
Para "pegar" os nove caracteres,
só usar o "bash".


Se for como o chegado disse aí em cima, então tu fazes assim:

#!/usr/bin/env bash
arquivo='/tmp/dados.txt'

while IFS= read -r i; do
ultimos9Caracteres="${i:(-9)}"
for ((i = ${#ultimos9Caracteres}; i >= 0; i--)); do
printf "${ultimos9Caracteres:$i:1}"
done
echo ''
done < "$arquivo"


---
echo 1244394795515721490698P | dc