awk를 사용하여 파일에 단어 색인을 만드는 방법은 무엇입니까?

awk를 사용하여 파일에 단어 색인을 만드는 방법은 무엇입니까?

을 사용해야 하는 과제에 문제가 있습니다 awk. 이 스크립트는 파일의 단어만 알파벳 순서로 출력하고 그 뒤에 :공백을 넣은 다음 단어가 나타나는 쉼표로 구분된 줄 목록을 출력합니다. 예를 들어:

C
CB
92A 
A
BFG How Are You 
B Are 
C 
C Are
.
.B

그것은해야한다

A: 3, 4
Are: 5, 6, 8
B: 6, 10
BFG: 5
C: 1, 7, 8
CB: 2
How: 5
You: 5

나는 이것을 시도했지만 성공하지 못했습니다.

#!/bin/awk -f
{
split($0, char);
print $0;
sort;
}

답변1

노력하다:

$ awk '
{
  gsub(/[^[:alpha:] ]/,"");
  for(i=1;i<=NF;i++) {
    a[$i] = a[$i] ? a[$i]", "FNR : FNR;
  }
}
END {
  for (i in a) {
    print i": "a[i];
  }
}' file | sort 
A: 3, 4
Are: 5, 6, 8
B: 6, 10
BFG: 5
C: 1, 7, 8
CB: 2
How: 5
You: 5

관련 정보