僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。
さっきのところを書いている間に日を跨いでしまった。
漢字を比較してみる。全角の"1"と、ASCIIの"1"の
違いが分かりやすいように、区切りに"/"を使ってみた。
今度も mawk と gawk に違いはなし。
FreeBSDのawkも同様。
#!/usr/bin/env awk BEGIN { foo="が" n = split("あ/か/ぎ/く/エ/1/1/9/牛", bar ,"/") for(i=1; i<=n;i++) { foo > bar[i] ? baz="大きい" : baz="小さい" print foo " は " bar[i] " より " baz } } => が は あ より 大きい が は か より 大きい が は ぎ より 小さい が は く より 小さい が は エ より 小さい が は 1 より 大きい が は 1 より 小さい が は 9 より 小さい が は 牛 より 小さい
なんとかできた。
BEGIN { npoints = split("FDCBA", af, "") } { NR=2 ? gba = $1 : 0 } END { points = split(gba, glist, "") for (gnum in glist) { for (snum in af) { af[snum] == glist[gnum] ? \ total = total + (snum - 1) : 0 } } print total print total/points }
配列は連想配列。しかしながら。
とりあえずは添字(要素でなく)を出力してみた。
あ、それからsplit()で一括代入すると、ゼロからでなく1から
添字を割り当てるようだった。
$ gawk 'BEGIN{ foo = split("ABCDE", bar, ""); \ for (buzz in bar) { print buzz } }' 4 5 1 2 3 $ mawk 'BEGIN{ foo = split("ABCDE", bar, ""); \ for (buzz in bar) { print buzz } }' 1 2 3 4 5
ついでに(?) FreeBSD の awk も。
$ awk 'BEGIN{ foo = split("ABCDE", bar, ""); \ for (buzz in bar) { print buzz } }' 2 3 4 5 1
mawk が sort しているかと思ったが、違うようだ。
配列の要素数を数十以上に増やすと、どのawkでも順序は
ばらばらになった。
入力行が5行未満だとおかしくなっていた。
{x[NR] = $0} END { NR < 5 ? l=NR-1 : l=4 for (i=l; i >= 0; i--) print x[NR - i ] }
リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。