#!/bin/bash echo '読み込むリストのファイル名を入力してください.' read filename # リストの読み込み。 n=`sed -n '1p' $filename` # 問題Aではリストの 1 行目に文献の数が書かれているので、 1 行目のみを取得してこれを n という変数で扱う。  sed -e '1d' $filename | # 文献数を示した 1 行目を削除し、 sed -e '/^$/d' | # 削除した 1 行目の空白を埋め、 sort > result_1a.txt # 本のタイトルについてアルファベット順に並び変える。これら全てを実行したものを result_1a.txt として上書き保存する。 for i in `seq 1 $n` # i に 1 から n までの数を代入して繰り返し構文。 do T[i]=`head -$i result_1a.txt | tail -1 | cut -d ',' -f1` M[i]=`head -$i result_1a.txt | tail -1 | cut -d ',' -f3` N[i]=`head -$i result_1a.txt | tail -1 | cut -d ',' -f2 | cut -c 2` L[i]=`echo "${T[$i]},${M[$i]}, ${N[$i]}"` # 区切りを「,」に指定することで本のタイトル・著者の名・著者の性という三つのフィールドに分けられる。 # その後 i 行目の本のタイトルを T[i] 、著者の性と名についてもそれぞれ M[i] N[i] という配列に 1 行ずつ入れていく。 # 名については、頭文字で入れるためにスペースを飛ばした 2 文字目だけを取り出している。 # 各繰り返しの最後の作業として、タイトル・名・性の順で並べたものを i 行目の情報 L[i] とする。 done echo -n > result_1a.txt # ここで一度 result_1a.txt を白紙に戻す。 IFS="$" # 区切りを改行に設定。次の作業で 1 行ずつ並べるためである。 for j in ${L[@]} # L[i]の数だけ繰り返し。 do echo "$j" >> result_1a.txt # L[i] を順番に result_1a.txt へ上書き保存していく。 done cat result_1a.txt echo '以上の内容でリストが生成されました' # 生成したリストの確認。