トップ «前の日記(2012-11-15(Thu)) 最新 次の日記(2012-11-23(Fri))» 編集

屑俺日記

僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。


2012-11-16(Fri) 時々小雨が降ってきていたのは、既に昨日だ

今度はマルチバイトで

さっきのところを書いている間に日を跨いでしまった。
漢字を比較してみる。全角の"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 より 小さい
が は 牛 より 小さい

GPA

なんとかできた。

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
}

mawkとgawk(3)

配列は連想配列。しかしながら。
とりあえずは添字(要素でなく)を出力してみた。
あ、それから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でも順序は ばらばらになった。

tail 作り直し

入力行が5行未満だとおかしくなっていた。

{x[NR] = $0}
END {
NR < 5 ? l=NR-1 : l=4
for (i=l; i >= 0; i--)
  print x[NR - i ]
}

リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。

index.htmlは ここから。