한 파일의 숫자를 다른 파일의 이름과 일치시키는 방법은 무엇입니까?

한 파일의 숫자를 다른 파일의 이름과 일치시키는 방법은 무엇입니까?

알겠습니다. 여기가 질문하기에 적합한 곳이기를 바랍니다. 2개의 파일이 있습니다.

첫 번째 파일에는 클래스 CRN #, 강사 ID #, 클래스 섹션 #, 학생 수의 4개 필드가 있습니다.

예:

0002  T00005  006  15
0004  T00004  012  26
.
.
etc

두 번째 파일에는 강사 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

명령 출력을 저장합니다.

 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

이 코드가 기분 나쁘다는 걸 압니다. 오늘 교수님에게 보여드렸더니 "흠...어디 보자. 여기서 무슨 짓을 한 거야?"라고 하더군요. ㅋㅋㅋ. 그런데 살펴보니 괜찮다고 하더군요. 그는 항상 "속담 속 고양이의 가죽을 벗기는 방법은 여러 가지가 있습니다"라고 말합니다.

도움을 주신 모든 분, 즉 Letizia에게 감사드립니다.

관련 정보