다른 파일의 csv 열에 있는 값의 발생 횟수를 계산하고 새 열로 추가합니다.

다른 파일의 csv 열에 있는 값의 발생 횟수를 계산하고 새 열로 추가합니다.

기본 셸 도구(Python이나 Perl 없음)를 사용하여 이 작업을 수행할 수 있나요?

1을 입력하세요:

file1.csv
    John,Doe,[email protected]
    Andy,Barry,[email protected]
    Mary,,[email protected]

INPUT2에 있는 file1의 세 번째 열에서 이메일 발생 횟수를 계산합니다.

file2.log
    [email protected]&fghfgh
    asdda&[email protected]
    [email protected]&werewr

원하는 출력:

result.csv
    John,Doe,[email protected],0
    Andy,Barry,[email protected],2
    Mary,,[email protected],1

매우 감사합니다!

답변1

유효한 입력을 제공하지 않았으므로 다음을 사용했습니다.

John,Doe,[email protected]
Andy,Barry,[email protected]
Mary,,[email protected]

다음 awk 한 줄 문은 예상되는 결과를 제공합니다.

awk -F, '{l[NR]=$0;f[NR]=$3;c[$3]++}END{for(i=1;i<=NR;i++)print l[i] "," c[f[i]]}'

여기서 문제는 작업에 두 번의 패스가 필요하다는 것입니다. (f[]는 전체 내용을 파싱하거나 마지막에 다시 파싱하는 것을 피하기 위한 것입니다.) 하지만 왜 Python이나 Perl을 제외했는지 이해할 수 없기 때문에기본 쉘 도구), 어쩌면 awk도 공정한 게임이라고 생각하지 않을 수도 있습니다...

관련 정보