wandersonbc
(usa Ubuntu)
Enviado em 19/05/2016 - 15:54h
msoliver escreveu:
Bom dia, wandersonbc.
Agora (parece) que entendi . . .
E mais simples, não precisa
saber se é PAR ou IMPAR.
Apenas "DUPLICAR" a ENTRADA, colocando o "
F ou
V" na SAíDA .
Se, o que você precisa é:
0001234_00001F.tif
0001234_00001V.tif
0001234_00002F.tif
0001234_00002V.tif
0001234_00003F.tif
0001234_00003V.tif
0001234_00004F.tif
0001234_00004V.tif
0001234_00005F.tif
0001234_00005V.tif
0001234_00005F.tif
0001234_00005V.tif
0001234_00007F.tif
0001234_00007V.tif
0001234_00008F.tif
0001234_00008V.tif
0001234_00009F.tif
0001234_00009V.tif
0001234_000010F.tif
0001234_000010V.tif
A solução é:
while IFS="_" read -r MAT PG;do
PGN=$(cut -d"." -f1 <<< "$PG")
for FV in F V;do
echo ""$MAT"_"$PGN""$FV".tif"
done
done<paginas.txt
Ou
A solução é:
while IFS=$"\n" read -r line;do
for FV in F V;do
sed 's/\./'$FV'\./' <<< "$line" >> PAGINAS_NOVO.txt
done
done<paginas.txt
ONDE,
cat paginas.txt
0001234_00001.tif
0001234_00002.tif
0001234_00003.tif
0001234_00004.tif
0001234_00005.tif
0001234_00005.tif
0001234_00007.tif
0001234_00008.tif
0001234_00009.tif
0001234_000010.tif
ls -1 >> paginas.txt
Se, a resposta foi satisfatória, resolveu seu problema e te ajudou. . .
Marque-a como "a MELHOR", assim ganho uns pontos, o que incentiva a continuar colaborando . . . Rsrsrsr
Abç.:
Marcelo Oliver
Marcelo, valeu demais pela ajuda e presteza, infelizmente seu script não gerou o resultado que eu queria, pois se na entrada eu tenho 10 arquivos tifs com numeração em sequencia de 1 a 10, na minha saída com frente e verso eu deveria ter uma sequencia final de 1 a 5 (pois como vou ter 1Frente e 1Verso, a quantidade de arquivos é a mesma mas a numeração fica reduzida pela metade).
Com uma solução nada elegante, consegui o resultado que queria:
No meu ultimo código cometi um pequeno mas irritante erro: no comando seq, delimitei inicio mas não o fim da contagem para gerar o contador do nome do arquivo.
Ficou assim no final:
for arquivoTIF_ORIG in $TEMP/*.tif; do
matricula=$(echo $arquivoTIF_ORIG | /usr/bin/cut -d'_' -f2)
pagina=$(echo $arquivoTIF_ORIG | /usr/bin/cut -d'_' -f3 | /usr/bin/cut -d'.' -f1)
modpagina=$(echo "${pagina}%2" | /usr/bin/bc)
if [ "$modpagina" = 0 ];then
pagina="$(echo $pagina/2 | /usr/bin/bc)"
arquivoTIF_FINAL="$DESTINO/${matricula}_$(/usr/bin/seq -f "%05g" $pagina $pagina)V.tif" # <=== aqui foi o erro, esqueci de repetir o segundo $pagina que faz com que o seq comece uma sequencia de numeração, mas pare nela mesmo, usei isto apenas para manter o layout de 5 strings na numeração da pagina.
/bin/mv ${arquivoTIF_ORIG} ${arquivoTIF_FINAL}
elif [ "$modpagina" = 1 ];then
pagina="$(echo $pagina/2 + $modpagina | /usr/bin/bc)"
arquivoTIF_FINAL=$DESTINO/${matricula}_$(/usr/bin/seq -f "%05g" $pagina $pagina)F.tif
/bin/mv ${arquivoTIF_ORIG} ${arquivoTIF_FINAL}
fi
Onde:
na pasta $TEMP terá os arquivos: _______________Na pasta $DESTINO eu terei:
0121204_00001.tif_______________________________0121204_00001F.tif
0121204_00002.tif_______________________________0121204_00001V.tif
0121204_00003.tif_______________________________0121204_00002F.tif
0121204_00004.tif_______________________________0121204_00002V.tif
0121204_00005.tif_______________________________0121204_00003F.tif
0121204_00006.tif_______________________________0121204_00003V.tif
0121204_00007.tif_______________________________0121204_00004F.tif
0121204_00008.tif_______________________________0121204_00004V.tif
0121204_00009.tif_______________________________0121204_00005F.tif
0121204_00010.tif_______________________________0121204_00005V.tif
0121204_00011.tif_______________________________0121204_00006F.tif
Vou estudar melhor a sua dica, pois além de mais simples parece ser muito mais eficiente.
Agradeço a todos pela ajuda. Até mais.