Comando "for" - tratando com 2 arquivos ou "echo" eliminando "/" e "-"

1. Comando "for" - tratando com 2 arquivos ou "echo" eliminando "/" e "-"

Carlos Eduardo
cebaldocchi

(usa Ubuntu)

Enviado em 10/11/2015 - 19:31h

Boa noite pessoal,
tudo bem?

Seguinte, tenho uma lista de palavras-links e estou fazendo um Shell Script para gerar os links em formato HTML.
Meu arquivo que eu tenho pronto é esse aqui: https://dl.dropboxusercontent.com/u/45319171/vivaolinux/lista-links.txt

Quero fazer um programa pra gerar os links no formato abaixo:
<p><a href="$LINK.htm" title="$TITULO">$TITULO</a></p>

Utilizando o arquivo de entrada lista-links.txt - o que eu desejo é que fique assim:
<p><a href="como-operar-um-torno-cnc.htm" title="Como Operar um Torno CNC">Como Operar um Torno CNC</a></p>
<p><a href="ferramentas-desbaste.htm" title="Ferramentas Desbaste">Ferramentas Desbaste</a></p>
<p><a href="torno-romi-g280.htm" title="Torno Romi G280">Torno Romi G280</a></p>
<p><a href="fresadora-cnc-vecker.htm" title="Fresadora CNC Vecker">Fresadora CNC Vecker</a></p>


Eu fiz o seguinte programa:
#/bin/sh

echo "Script para geração do HTML"

nome_do_arquivo="html_1.txt"

rm $nome_do_arquivo

for i in $(cat lista-links.txt)
do
echo "<p><a href=\"$i.htm\" title=\"$i\">$i</a></p>" >> $nome_do_arquivo
done


Agora eu não sei como devo proceder... tentei gerar um arquivo de entrada removendo os "-", "_" e "/", mas aí eu teria 2 arquivos para tratar e não sei como fazer.




  


2. Solução

Carlos Eduardo
cebaldocchi

(usa Ubuntu)

Enviado em 11/11/2015 - 01:52h

Pessoal, achei uma solução para o problema. Fucei na internet inteira por: "bash for loop two variables" e realmente não existe uma solução com o comando "for". Tem bastante gente procurando sobre a mesma coisa, inclusive um rapaz tinha a mesma dúvida que eu: (olha o que ele postou)


for i,j in file1 file2 # i iterates in file1 and j iterates in file2
do
echo $i $j
done


Todas soluções que achei na internet são "gambiarras" no meu parecer... pois usam um contador dentro do "for" pra conseguir fazer isso.

Segue a solução que consegui... pelo menos consegui tentando e deu um trabalhão!

linhas_documento=$(wc -l < $lista_links) #serve para contar o número de linhas do documento para saber quantas vezes deve repetir o laço FOR

for i in `seq 1 $linhas_documento`;
do

var1=$(eval "sed -n "$i"p $lista_links")
var2=$(eval "sed -n "$i"p $lista_palavras")

echo "<p><a href=\"$var1.htm\" title=\"$var2\">$var2</a></p>" >> $arquivo_saida_1

done







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts