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

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

글쎄요, 여기가 물어볼 곳이 아닐까 싶습니다. 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에게 감사드립니다.

관련 정보