
알겠습니다. 여기가 질문하기에 적합한 곳이기를 바랍니다. 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
이것이 instructorList
6개의 필드가 있는 파일의 이름입니다.
마지막으로 시도해 보세요:
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에게 감사드립니다.