Executando awk a partir de shell script

1. Executando awk a partir de shell script

Mario V. M. Sandrini
msandrini

(usa Outra)

Enviado em 24/06/2017 - 07:35h

Pessoal,
Tenho um arquivo passwd com o conteúdo abaixo:
root:xx:0:3::/:/sbin/sh
daemon:*:1:5::/:/sbin/sh
bin:*:2:2::/usr/bin:/sbin/sh
lp:*:9:7::/var/spool/lp:/sbin/sh
aluno1::101:20:,,,:/home/aluno1:/usr/bin/ksh
aluno2::102:20:,,,:/home/aluno2:/usr/bin/ksh
aluno3::103:20:,,,:/home/aluno3:/usr/bin/ksh

E um arquivo scri5.awk conforme abaixo:
BEGIN {OFS = "*"; totsel=0}
($4 == "20") {print $1, $6; totsel = totsel + 1}
END {print "O numero de usuarios lidos foi: " NR, "selecionado ", totsel}

Quando executo na linha de comando:
$ awk -F":" -f scri5.awk passwd
aluno1*/home/aluno1
aluno2*/home/aluno2
aluno3*/home/aluno3
O numero de usuarios lidos foi: 7*selecionado *3

o resultado é executado com sucesso, mas quando coloco o comando awk num shell script:

$ cat scri5.sh
#! /bin/bash

`awk 'BEGIN {FS = ":"; OFS = "*"} ($4 == "20") {print $1, $6} END {print "O numero de usuarios lido foi: " NR}' ./passwd`


Acontece o erro abaixo:

./scri5.sh: line 2: $'\r': comando não encontrado
./scri5.sh: line 3: aluno1*/home/aluno1: No such file or directory
./scri5.sh: line 4: $'\r': comando não encontrado

O que estou fazendo errado?


  


2. Re: Executando awk a partir de shell script

Perfil removido
removido

(usa Nenhuma)

Enviado em 24/06/2017 - 12:03h

msandrini escreveu:

Pessoal,
Tenho um arquivo passwd com o conteúdo abaixo:
root:xx:0:3::/:/sbin/sh
daemon:*:1:5::/:/sbin/sh
bin:*:2:2::/usr/bin:/sbin/sh
lp:*:9:7::/var/spool/lp:/sbin/sh
aluno1::101:20:,,,:/home/aluno1:/usr/bin/ksh
aluno2::102:20:,,,:/home/aluno2:/usr/bin/ksh
aluno3::103:20:,,,:/home/aluno3:/usr/bin/ksh

E um arquivo scri5.awk conforme abaixo:
BEGIN {OFS = "*"; totsel=0}
($4 == "20") {print $1, $6; totsel = totsel + 1}
END {print "O numero de usuarios lidos foi: " NR, "selecionado ", totsel}

Quando executo na linha de comando:
$ awk -F":" -f scri5.awk passwd
aluno1*/home/aluno1
aluno2*/home/aluno2
aluno3*/home/aluno3
O numero de usuarios lidos foi: 7*selecionado *3

o resultado é executado com sucesso, mas quando coloco o comando awk num shell script:

$ cat scri5.sh
#! /bin/bash

`awk 'BEGIN {FS = ":"; OFS = "*"} ($4 == "20") {print $1, $6} END {print "O numero de usuarios lido foi: " NR}' ./passwd`


Acontece o erro abaixo:

./scri5.sh: line 2: $'\r': comando não encontrado
./scri5.sh: line 3: aluno1*/home/aluno1: No such file or directory
./scri5.sh: line 4: $'\r': comando não encontrado

O que estou fazendo errado?


Testei o comando aqui com meu /etc/passwd e funcionou muito bem. Você está escrevendo

`awk ... comando ...`

ou

VARIAVEL=`awk ... comando ...`

?

A primeira pode dar erro.

A saída do meu foi:

O numero de usuarios lido foi: 72.

----------------------------------------------------------------------------------------------------------------
Nem direita, nem esquerda. Quando se trata de corrupção o Brasil é ambidestro.
(anônimo)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden



3. Re: Executando awk a partir de shell script

Mario V. M. Sandrini
msandrini

(usa Outra)

Enviado em 25/06/2017 - 06:50h

Olá Listeiro,

Eu mudei o script, ficou da seguinte forma:
#! /bin/bash

TOTAL=`awk 'BEGIN {FS = ":"; OFS = "*"} ($4 == "20") {print $1, $6} END {print "O numero de usuarios lido foi: " NR}' ./passwd`

echo "\nO numero de usuarios lidos foi " $TOTAL

Agora obtenho o resultado final (o número total de usuários lidos), mas o comando não mostra os usuários que satisfazem a condição ($4 == "20"), veja abaixo:

./scri5.sh: line 2: $'\r': comando não encontrado
./scri5.sh: line 4: $'\r': comando não encontrado
\nO numero de usuarios lidos foi aluno1*/home/aluno1 aluno2*/home/aluno2 aluno3*/home/aluno3 O numero de usuarios lido foi: 7

Não dá para fazer isso executando um comando awk dentro do shell script?







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts