大阪教育大学  国語教育講座  野浪研究室  戻る  counter

awk script 空欄補充問題

awkのまとめを右クリック「新しいウィンドウで開く」で参照下さい。

# ファイル内容表示

処理前データ 処理後データ
 信子は女子大学にいた時から、才媛の名声を担っていた。
彼女が早晩作家として文壇に打って出る事は、殆誰も疑わなかった。
中には彼女が在学中、既に三百何枚かの自叙伝体小説を書き上げたなどと吹聴して歩くものもあった。
が、学校を卒業して見ると、まだ女学校も出ていない妹の照子と彼女とを抱えて、後家を立て通して来た母の手前も、そうは我儘を云われない、複雑な事情もないではなかった。
そこで彼女は創作を始める前に、まず世間の習慣通り、縁談からきめてかかるべく余儀なくされた。
 信子は女子大学にいた時から、才媛の名声を担っていた。
彼女が早晩作家として文壇に打って出る事は、殆誰も疑わなかった。
中には彼女が在学中、既に三百何枚かの自叙伝体小説を書き上げたなどと吹聴して歩くものもあった。
が、学校を卒業して見ると、まだ女学校も出ていない妹の照子と彼女とを抱えて、後家を立て通して来た母の手前も、そうは我儘を云われない、複雑な事情もないではなかった。
そこで彼女は創作を始める前に、まず世間の習慣通り、縁談からきめてかかるべく余儀なくされた。
{				# ファイルのすべての行に対して  始め
	print $0		# 読み込んだ行の内容を出力する  |
}				#                 終わり

# 行番号付きファイル内容表示

処理前データ 処理後データ
 信子は女子大学にいた時から、才媛の名声を担っていた。
彼女が早晩作家として文壇に打って出る事は、殆誰も疑わなかった。
中には彼女が在学中、既に三百何枚かの自叙伝体小説を書き上げたなどと吹聴して歩くものもあった。
が、学校を卒業して見ると、まだ女学校も出ていない妹の照子と彼女とを抱えて、後家を立て通して来た母の手前も、そうは我儘を云われない、複雑な事情もないではなかった。
そこで彼女は創作を始める前に、まず世間の習慣通り、縁談からきめてかかるべく余儀なくされた。
1  信子は女子大学にいた時から、才媛の名声を担っていた。
2 彼女が早晩作家として文壇に打って出る事は、殆誰も疑わなかった。
3 中には彼女が在学中、既に三百何枚かの自叙伝体小説を書き上げたなどと吹聴して歩くものもあった。
4 が、学校を卒業して見ると、まだ女学校も出ていない妹の照子と彼女とを抱えて、後家を立て通して来た母の手前も、そうは我儘を云われない、複雑な事情もないではなかった。
5 そこで彼女は創作を始める前に、まず世間の習慣通り、縁談からきめてかかるべく余儀なくされた。
{
	1 2,3
4

問1  次の語群から、14に埋める語句を選びなさい。
NRNumber of Record その時点の行番号がセットされているシステム変数(小文字はダメよ)
}
print
$0
答え合わせ

# 書式付行番号 付きファイル内容表示

処理前データ 処理後データ
 信子は女子大学にいた時から、才媛の名声を担っていた。
彼女が早晩作家として文壇に打って出る事は、殆誰も疑わなかった。
中には彼女が在学中、既に三百何枚かの自叙伝体小説を書き上げたなどと吹聴して歩くものもあった。
が、学校を卒業して見ると、まだ女学校も出ていない妹の照子と彼女とを抱えて、後家を立て通して来た母の手前も、そうは我儘を云われない、複雑な事情もないではなかった。
そこで彼女は創作を始める前に、まず世間の習慣通り、縁談からきめてかかるべく余儀なくされた。
   1      信子は女子大学にいた時から、才媛の名声を担っていた。
   2     彼女が早晩作家として文壇に打って出る事は、殆誰も疑わなかった。
   3     中には彼女が在学中、既に三百何枚かの自叙伝体小説を書き上げたなどと吹聴して歩くものもあった。
   4     が、学校を卒業して見ると、まだ女学校も出ていない妹の照子と彼女とを抱えて、後家を立て通して来た母の手前も、そうは我儘を云われない、複雑な事情もないではなかった。
   5     そこで彼女は創作を始める前に、まず世間の習慣通り、縁談からきめてかかるべく余儀なくされた。
{
	printf"5678",NR,$0;
}

問2  次の語群から、58に埋める語句を選びなさい。
%s文字列が入る
\tタブコード
\n改行コード
%4d4桁の整数が右詰で入る
答え合わせ

# 「秋」 に行番号をつけて表示

処理前データ 処理後データ
「秋」 芥川龍之介
    秋
    一
   1      信子は女子大学にいた時から、才媛の名声を担っていた。彼女が早晩作家として文壇に打って出る事は、殆誰も疑わなかった。中には彼女が在学中、既に三百何枚かの自叙伝体小説を書き上げたなどと吹聴して歩くものもあった。が、学校を卒業して見ると、まだ女学校も出ていない妹の照子と彼女とを抱えて、後家を立て通して来た母の手前も、そうは我儘を云われない、複雑な事情もないではなかった。そこで彼女は創作を始める前に、まず世間の習慣通り、縁談からきめてかかるべく余儀なくされた。
   2      彼女には俊吉と云う従兄があった。彼は当時まだ大学の文科に籍を置いていたが、やはり将来は作家仲間に身を投ずる意志があるらしかった。信子はこの従兄の大学生と、昔から親しく往来していた。それが互に文学と云う共通の話題が出来てからは、愈親しみが増したようであった。唯、彼は信子と違って、当世流行のトルストイズムなどには一向敬意を表さなかった。そうして始終フランス仕込みの皮肉や警句ばかり並べていた。こう云う俊吉の冷笑的な態度は、時々万事真面目な信子を怒らせてしまう事があった。が、彼女は怒りながらも、俊吉の皮肉や警句の中に、何か軽蔑出来ないものを感じない訳には行かなかった。
{
	if($09/10   (スペース3個)/{
		printf"%4d\t%s\n",11,$0;
	12
}

問3  次の語群から、912に埋める語句を選びなさい。
}
!~ 「~」は右辺中に左辺文字列が含まれる場合に真の値を取る。「!」はその否定。
++c1増加した変数cの値
^正規表現(/ /でくくられている部分)で、行頭を表すメタ文字
答え合わせ

# 茶筅の解析データを使って、語彙の頻度を出力

処理前データ 処理後データ
「秋」 芥川龍之介 を「茶筅」で形態素解析したデータ
62
9
1上り
1多少
1踏む
1起す
1人通り
1仕込み
4待つ
13なる
14だけ
3
2
8かつ
2
1わざと
5眺める
2間もなく
3見せる
1と同時に
{
	13;
}
END{
	14(i 15 16){
		printf"%4d\t%s\n",d[i],i;
	}
}

問4  次の語群から、1316に埋める語句を選びなさい。
d配列d
d[$2]++配列d[添え字$2]の値を1増加 語の基本形の数を勘定する
inのなかの
for繰り返し
答え合わせ

# 1〜100 の合計

処理前データ 処理後データ
nothing Total= 5050
BEGIN{
	s=0;
	for(17;18;19){
		20;
	}
	print "Total=",s;
}

問5  次の語群から、1720に埋める語句を選びなさい。
i++変数iを1増加
i<=100変数iが100以内の間
i=1変数iが1から
s=s+i変数sにiの値を足し込む
答え合わせ

# 1〜100 の奇数の合計と偶数の合計

処理前データ 処理後データ
nothing 奇数の合計= 2500
偶数の合計= 2550
BEGIN{
	k=0;
	g=0;
	for(i=1;i<=100;21){
		k=k+i;
		g=g+i22;
	}
	print "23の合計=",k;
	print "24の合計=",g;
}

問6  次の語群から、2124に埋める語句を選びなさい。
i=i+2変数iを2ずつ増加
+1
奇数
偶数
答え合わせ

# サイコロを6000回振ったときの出目の頻度

処理前データ 処理後データ
nothing    1=     983
   2=    1030
   3=    1006
   4=    1017
   5=    1009
   6=     955
BEGIN{
	for(i=1;i<=25;i++){
		26;
	}
	for(i=1;i<=6000;i++){
		r=int(27*6)+1;
		28;
	}
	for(i=1;i<=6;i++){
		printf"%4d=%8d\n",i,d[i];
	}
}

問7  次の語群から、2528に埋める語句を選びなさい。
6
d[r]++
rand()0から1未満の乱数を発生する
d[i]=0初期化
答え合わせ

# 縦横計算

処理前データ 処理後データ
 国語数学社会理科英語
小泉純一郎3561846190
藤井治芳4030905266
青木幹雄5037313635
飯島勲7069559043
片桐幸雄3094558459
 国語数学社会理科英語Total
小泉純一郎3561846190331
藤井治芳4030905266278
青木幹雄5037313635189
飯島勲7069559043327
片桐幸雄3094558459322
Total225291315323293
# データはtabで区切られていること
# 1行目と各行の1列目は項目名
BEGIN{
	FS="29"
}

{
	for(x=1;x<=NF;x++){
		30;
		if(NR>0){sx[NR]=sx[NR]+$x}
		if(x>0 && NR>0){sy[x]=sy[x]+$x}
	}
}

END{
	y=1;
	for(x=1;x<=NF;x++){
		printf d[x,y] "\t";
	}
	31;
	for(y=2;y<=NR;y++){
		for(x=1;x<=NF;x++){
			printf d[x,y] "\t";
		}
		print sx[y];
	}
	printf"Total";
	for(x=1;x<=NF;x++){
		32;
	}
	print"";
}

問8  次の語群から、2932に埋める語句を選びなさい。
print "Total"Totalと出力
\tタブコード
d[x,NR]=$x2次元配列d[x,NR]にx番目の欄の値を代入
printf sy[x] "\t"配列sy[x]の値の後ろにタブコードをつけて出力(改行しないで)
答え合わせ
終了です。
大阪教育大学  国語教育講座  野浪研究室  頁頭  戻る

mailto: nonami@cc.osaka-kyoiku.ac.jp
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
# 行番号付きファイル内容表示
{
	print NR,$0
}
戻る   
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
# 書式付行番号 付きファイル内容表示
{
	printf"%4d\t%s\n",NR,$0;
}
戻る   
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
# 「秋」 に行番号をつけて表示
{
	if($0!~/^   /{
		printf"%4d\t%s\n",++c,$0;
	}
}
戻る   
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
# 茶筅の解析データを使って、語彙の頻度を出力
{
	d[$2]++;
}
END{
	for(i in d){
		printf"%4d\t%s\n",d[i],i;
	}
}
戻る   
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
# 1〜100 の合計
BEGIN{
	s=0;
	for(i=1;i<=100;i++){
		s=s+i;
	}
	print "Total=",s;
}
戻る   
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
# 1〜100 の奇数の合計と偶数の合計
BEGIN{
	k=0;
	g=0;
	for(i=1;i<=100;i=i+2){
		k=k+i;
		g=g+i+1;
	}
	print "奇数の合計=",k;
	print "偶数の合計=",g;
}
戻る   
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
# サイコロを6000回振ったときの出目の頻度
BEGIN{
	for(i=1;1<=6;i++){
		d[i]=0;
	}
	for(i=1;1<=6000;i++){
		r=int(rand()*6)+1;
		d[r}++;
	}
	for(i=1;1<=6;i++){
		printf"%4d=%8d\n",i,d[i];
	}
}
戻る   
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
# 縦横計算
# データはtabで区切られていること
# 1行目と各行の1列目は項目名
BEGIN{
	FS="\t"
}

{
	for(x=1;x<=NF;x++){
		d[x,NR]=$x;
		if(NR>1){sx[NR]=sx[NR]+$x}
		if(x>1 && NR>1){sy[x]=sy[x]+$x}
	}
}

END{
	y=1;
	for(x=1;x<=NF;x++){
		printf d[x,y] "\t";
	}
	print "Total";
	for(y=2;y<=NR;y++){
		for(x=1;x<=NF;x++){
			printf d[x,y] "\t";
		}
		print sx[y];
	}
	printf"Total";
	for(x=1;x<=NF;x++){
		printf sy[x] "\t";
	}
}


戻る