]> Pileus Git - ~andy/sfvlug/blob - awk/src/awk-3-awklife.sh
Add sed and awk presentation
[~andy/sfvlug] / awk / src / awk-3-awklife.sh
1 #!/bin/bash
2
3 frame="
4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5 . . . . . . . . . . . . . . . . . . . . . . . . . # . . . . . . . . . . . .
6 . . . . . . . . . . . . . . . . . . . . . . . # . # . . . . . . . . . . . .
7 . . . . . . . . . . . . . # # . . . . . . # # . . . . . . . . . . . . # # .
8 . . . . . . . . . . . . # . . . # . . . . # # . . . . . . . . . . . . # # .
9 . # # . . . . . . . . # . . . . . # . . . # # . . . . . . . . . . . . . . .
10 . # # . . . . . . . . # . . . # . # # . . . . # . # . . . . . . . . . . . .
11 . . . . . . . . . . . # . . . . . # . . . . . . . # . . . . . . . . . . . .
12 . . . . . . . . . . . . # . . . # . . . . . . . . . . . . . . . . . . . . .
13 . . . . . . . . . . . . . # # . . . . . . . . . . . . . . . . . . . . . . .
14 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28 "
29
30 while sleep 0.05; do
31         echo "$frame" | cowsay -n
32         frame=$(echo "$frame" | awk '
33                 function count(i) {
34                         cnt = 0;
35                         if (tops[i-1] == "#") cnt++;
36                         if (tops[i  ] == "#") cnt++;
37                         if (tops[i+1] == "#") cnt++;
38
39                         if (curs[i-1] == "#") cnt++;
40                         if (curs[i+1] == "#") cnt++;
41
42                         if (bots[i-1] == "#") cnt++;
43                         if (bots[i  ] == "#") cnt++;
44                         if (bots[i+1] == "#") cnt++;
45                         return cnt;
46                 }
47
48                 function run() {
49                         split(top, tops, " ")
50                         split(cur, curs, " ")
51                         split(bot, bots, " ")
52                         len = length(curs);
53                         for (i=1; i < len+1; i++) {
54                                 new = curs[i]
55                                 cnt = count(i)
56                                 if (cnt <  2) new = ".";
57                                 if (cnt == 3) new = "#";
58                                 if (cnt >  3) new = ".";
59                                 printf "%s%s", new, i==len ? "" : " "
60                         }
61                         print ""
62                 }
63
64                 // {
65                         top=cur; cur=bot; bot=$0
66                         if (cur) run()
67                 }
68
69                 END {
70                         top=cur; cur=bot; bot="";
71                         run();
72                 }
73         ')
74 done