あるファイル内の番号を別のファイル内の名前と一致させるにはどうすればよいでしょうか?

あるファイル内の番号を別のファイル内の名前と一致させるにはどうすればよいでしょうか?

わかりました。ここが質問するのに適切な場所であることを願います。ファイルは 2 つあります。

最初のファイルには、クラス CRN 番号、インストラクター ID 番号、クラス セクション番号、学生数の 4 つのフィールドがあります。

例:

0002  T00005  006  15
0004  T00004  012  26
.
.
etc

2 番目のファイルには、インストラクター ID 番号、名、姓、建物、市外局番、電話番号の 6 つのフィールドがあります (私が知る限り)。

(名/姓が 1 つのフィールドか 2 つのフィールドかはわかりません...)

例:

T00001  Larry Lastname  Corley  555  555-5555
T00002  Ron  Lastname  Coreley  555  111-1111
.
.
etc

私が答えるべき質問は、「各講師は特定の学期に何セクションを教えたか」です。答えは次の形式にする必要があります。

# of sections | Instructor ID # | FirstName | LastName  

(デモでは「|」を使用していますが、実際の解決策ではスペースのみを使用します)

これまでに、私は次のことを行いました:

$ cat sections/sem092 | sort -k 2 | awk '{ print $2 }' | uniq -c

(sem092私が最初に言及したファイルです)

そして出力はそれで必要なものに近いです。上記のコードから得たもの:

Num. of Sections Taught |  Instructor ID #

何らかの方法で、パイプを介して、ID 番号を他のファイル内の名前と一致させる必要があります。 を使用する必要があると強く感じていますgrep。誰かに「手を引いてもらう」必要はありません。これは非常に興味深いと思いますが、途中で何かを見逃したと思うので、1、2 回促す必要があります。

答え1

コマンドの出力を保存します:

 cat sections/sem092 | sort -k 2 | awk '{ print $2 }' | uniq -c > firstPart.txt

この行をファイルに保存しますsearchInstructorName.sh:

 cat $1 | while read line; do 
    instructorID=`echo $line | awk '{print $2}'` 
    name=`grep $instructorID instructorList | awk '{print $2 " " $4}'`
    echo "$line $name" 
 done

このスクリプトでは、次のfirtsPart.txt行が想定されています。

5 T00005

これはinstructorList6 つのフィールドを持つファイルの名前です。

最後に試してください:

bash searchInstructorName.sh firstPart.txt

動作するはずです。


これは単一のスクリプトを含むバージョンです:

 cat $1 | sort -k 2 | awk '{ print $2 }' | uniq -c | while read line; do 
    instructorID=`echo $line | awk '{print $2}'` 
    name=`grep $instructorID $2 | awk '{print $2 " " $4}'`
    echo "$line $name" 
 done

これらの行を保存しsearchInstructorInfo.shて実行します:

 bash searchInstructorInfo.sh sections/sem092 instructorList

答え2

Letizia さん、詳しい回答をありがとうございます。あなたのコードの一部を使用しましたが、そのコードからさらにアイデアを得ることができました。この投稿を中途半端に終わらせないために、最終的な (ぞっとするような) コードは次のようになりました。

 cat sections/sem092 | sort -k 2 | awk '{ print $2 }' | uniq -c > no3 
 paste instructors | awk '{ print $2 " " $3 }' > no3n   
   #guess I could have just used cat above
 paste no3 no3n

このコードは恥ずかしいものだとわかっています。今日教授に見せたら、「うーん...ちょっと考えさせて。ここで何をしたの?」と言われたんです。笑。でも、教授はそれを見て、大丈夫だと言いました。教授はいつもこう言っています。「諺にあるように、猫の皮を剥ぐ方法は 1 つだけではない」

皆さん、特にレティシアさん、助けてくれてありがとう。

関連情報