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