다른 파일의 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 one-liner는 예상되는 결과를 제공합니다.

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을 배제했는지 이해할 수 없기 때문에(그들은~이다기본 쉘 도구) 아마도 당신은 공정한 게임도 고려하지 않을 것입니다 ...

관련 정보