[2] Comentário enviado por
Listeiro 037 em 30/07/2012 - 23:06h:
[1] Comentário enviado por foxbit3r em 30/07/2012 - 21:06h:
Olá,
Eu rodei o seu script e não consegui visualizar a criação de cabeçalho e rodapé.
Vc poderia por favor postar um exemplo?
Obrigado.
BLZ!!!
Você é o cara que fez os scripts de AWK que tinha antes.
Bem, realmente não ficou muito claro o propósito.
Ele foi um teste para outras ideias, do tipo pegar "uma coisa" e transformar essa coisa em HTML.
Fiz pensando nos seguintes termos:
- a entrada são dados retirados de alguma saída, os quais possuem algum tipo de explicação nas primeiras linhas
Podem ser comentários mesmo
- as linhas seriam campos, mas campos sem estarem organizados na mesma linha como que registros.
Então ele pega as linhas de x em x linhas e as transforma numa única linha (que virou um registro) com x campos.
Dá prá colocar um separador de campos igual ao do /etc/passwd, que é o ":"
- por fim, a criação do rodapé, sem aglutinar as últimas linhas.
Para manter a ideia do "conjunto" do "todo", há a possibilidade de deixar algumas últimas linhas sem se transformarem numa mesma linha, caso haja necessidade.
Fiz um teste por aqui e há um problema com a linha 65:
if (!$0) exit;
Eu a comentei e a coisa funcionou.
if (!$0) exit;
Ela estava aí por causa daquela coisa de tentar sair do loop caso não haja entrada. Aí ela verificou um caracter zero e saiu.
O teste:
Peguei um modelo de passwd reduzido
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
e modificado com o comando *"sed"*, para apenas auxiliar na construção de um possível exemplo; "sed" trocou o ':' por um '\n' para ficar com os dados espalhados daquela forma e com linhas de comentário ao inicio e ao fim apenas para exemplo (aqui este arquivo de entrada será chamado de passwd2):
# teste do script de awk
# usando um arquivo de modelo do /etc/passwd todo desmontado
# para reagupamento
root
x
0
0
root
/root
/bin/bash
daemon
x
1
1
daemon
/usr/sbin
/bin/sh
bin
x
2
2
bin
/bin
/bin/sh
sys
x
3
3
sys
/dev
/bin/sh
sync
x
4
65534
sync
/bin
/bin/sync
man
x
6
12
man
/var/cache/man
/bin/sh
lp
x
7
7
lp
/var/spool/lpd
/bin/sh
mail
x
8
8
mail
/var/mail
/bin/sh
news
x
9
9
news
/var/spool/news
/bin/sh
uucp
x
10
10
uucp
/var/spool/uucp
/bin/sh
proxy
x
13
13
proxy
/bin
/bin/sh
backup
x
34
34
backup
/var/backups
/bin/sh
# caso tenha dado certo
# estas deverao ser as duas ultimas linhas da saida
Então para reorganizar as informações usou-se a seguinte linha:
./format001.awk -v header=3 -v footer=2 -v step=7 passwd2
header para as três linhas com '#', footer para as duas últimas com '#' e step porque o passwd quando estava com o ':' possuia sete campos por linha.
A saída:
# teste do script de awk
# usando um arquivo de modelo do /etc/passwd todo desmontado
# para reagupamento
root x 0 0 root /root /bin/bash
daemon x 1 1 daemon /usr/sbin /bin/sh
bin x 2 2 bin /bin /bin/sh
sys x 3 3 sys /dev /bin/sh
sync x 4 65534 sync /bin /bin/sync
man x 6 12 man /var/cache/man /bin/sh
lp x 7 7 lp /var/spool/lpd /bin/sh
mail x 8 8 mail /var/mail /bin/sh
news x 9 9 news /var/spool/news /bin/sh
uucp x 10 10 uucp /var/spool/uucp /bin/sh
proxy x 13 13 proxy /bin /bin/sh
backup x 34 34 backup /var/backups /bin/sh
# caso tenha dado certo
# estas deverao ser as duas ultimas linhas da saida
Faltou o caracter "dois pontos", o ':' para separar os campos.
É um exercício de formatação de saída de texto. Pode ter sim outro modo melhor de se fazer com AWK.
Serve como preparativo para algo mais sério, um uso mais prático do AWK no dia a dia.
O separador de campo pode ser utilizado e o exemplo do que seria o cabeçalho/rodapé dependeria de quem usasse como ferramenta para outra coisa.