ご無沙汰しています。水羽です。
以下のようなプロシージャを作ってみました。
添削していただければ、幸甚です。
1)目的:特定のフィールドを指定して、並べ替えを行い、頻度を表
示する
※sortfだと -uNのようなものです。
2)データの形式は、空白区切り
王贛愚 おうかんぐ 1906 − 清華大学
伍啓元 ごけいげん 1912 − 滬江大学
任鴻雋 にんこうしゅん 1886 1961 清華大学
※【,】や【/】などを考えていましたが、当面、【 】で統一し
てゆくことにしました。
3)プロシージャの出力は、たとえば次のような形
1906 5
1912 10
※カラム=2(これは生年)を指定し、その分布を調べる
4)プロシージャ
proc unique1 {filename column encode} {
set fd [open $filename]
fconfigure $fd -encoding $encode
set data [read $fd 1]
if [string equal $data \ufeff] {
set data [read $fd]
} else {
append data [read $fd]
}
close $fd
set data2 [lsearch -all -regexp -inline \
[split $data \n] .+]
set num [llength $data2]
for {set x 0} {$x<=$num} {incr x} {
lappend data3 [lindex $data2 $x $column]
}
set data4 {}
foreach i $data3 {
lappend data4 "$i [regexp -all $i $data3]"
}
set data5 [join [lsort -unique $data4] \n]
puts $data5
}
5)並べ替えの原則(辞書順etc.)については、今後、必要に応じ
て加えてゆくつもりです。
6)上記のプロシージャでは、何か分かりませんが、僕にとって不要
なデータも数えて教えくれますが、それはいまのところ差し障り
がないのでそのまま出力しています。
みずは
追伸:
山本さんのstring repeat [format %c 10084] 1000には、心打た
れました(笑)