Pular para o conteúdo

Como executar um Shell Script de dentro do awk ? [RESOLVIDO]

Responder tópico
  • Denunciar
  • Indicar

1. Como executar um Shell Script de dentro do awk ? [RESOLVIDO]

Enviado em 18/08/2011 - 20:13h

Continuação do tópico resolvido aqui: http://www.vivaolinux.com.br/topico/Shell-Script/Shell-Script-Como-adicionar-novas-palavras-dentro-d...

Dentro de cada linha, eu preciso executar outro Script que deveria receber os dados do awk e só consegui fazendo uma chamada explícita ao system.
Existe outra forma sem ser esta ?
----------------
awk '{
ANO=substr($0,0,5)
MES=substr($0,5,2)
gsub(/[^0-9]/,"",TID)
system("./emitepontos.sh "ANO MES);
}'
-------------------

Obrigado.

Responder tópico

2. Re: Como executar um Shell Script de dentro do awk ? [RESOLVIDO]

Melhor resposta

Enviado em 18/08/2011 - 22:57h

Cara, o mais apropriado seria dar print dessas linhas e iterar elas no bash...

Algo do tipo:

PALAVRAS=`awk '{..............}'`
for linha in $PALAVRAS; do
.......
done

Chamar um bash dentro de um AWK exige que seja gerado um novo shell, o que consome mais memória e processamento que jogar a saida do AWK para o bash.

Espero ter ajudado!

3. Re: Como executar um Shell Script de dentro do awk ? [RESOLVIDO]

Enviado em 19/08/2011 - 02:53h

Veja se isto te ajuda.

awk '{
ANO=substr($0,0,5)
MES=substr($0,5,2)
gsub(/[^0-9]/,"",TID)
strCmd="./emitepontos.sh " ANO " " MES
system(strCmd)
}'

4. Re: Como executar um Shell Script de dentro do awk ? [RESOLVIDO]

Enviado em 19/08/2011 - 18:34h

Valeu @Hebang e @foxbit3r :)
Acabei optando por esta versão:
----------------

for arquivo in *.csv
do
_ANO_=$(echo -e "$arquivo"|cut -c-4)
_MES_=$(echo -e "$arquivo"|cut -c5-6)
_DIA_=$(echo -e "$arquivo"|cut -c7-8)
meuprog=" mostra $_ANO_ $_MES_ $_DIA_ "
$meuprog
done | sed 's/.csv/:/g'
------------


Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder