file1
사용자가 파일에 나타나는 횟수가 다음과 같은 파일이 있습니다 .
4 userC
2 userA
1 userB
file2
사용자와 다음과 같은 기타 정보가 포함된 또 다른 파일이 있습니다 .
userC, degree2
userA, degree1
userB, degree2
각 학위에 대해 사용자가 나타나는 횟수를 보여주는 출력을 원합니다.
5 degree2
2 degree1
답변1
순수한 awk
:
$ awk -F'[, ]' 'NR==FNR{n[$2]=$1;next}{m[$3]+=n[$1]}
END{for(i in m){print i " " m[i]}}' \
file1 file2
degree1 2
degree2 5
또는 다음과 같은 스크립트에 넣을 수도 있습니다.
#!/usr/bin/awk -f
BEGIN {
FS="[, ]"
}
{
if (NR == FNR) {
n[$2] = $1;
next;
} else {
m[$3] += n[$1];
}
}
END {
for (i in m) {
print i " " m[i];
}
}
먼저 필드 구분 기호를 쉼표와 공백으로 설정합니다(즉, BEGIN
블록 또는 -F
명령줄 옵션입니다.
그런 다음 첫 번째 파일(관용구 FNR == NR
)을 구문 분석할 때 사용자 이름별로 색인화된 배열에 사용자에 대한 연결 수를 넣습니다. 다음 파일을 구문 분석할 때 사용자 그룹별로 인덱스된 배열에 각 사용자의 연결 수를 추가합니다.
마지막으로 ( END
블록) 전체 배열을 스캔하고 키, 값 쌍을 인쇄합니다.