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

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

Geraldo Albuquerque
AprendiNoLinux

(usa Ubuntu)

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.



  


2. MELHOR RESPOSTA

Mauricio Souza Klein
Hebang

(usa Arch Linux)

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]

euteste da silva
foxbit3r

(usa Solaris)

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]

Geraldo Albuquerque
AprendiNoLinux

(usa Ubuntu)

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'
------------








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts