두 파일을 비교하고 첫 번째 파일의 공통 필드와 해당 줄 번호를 인쇄합니다.

두 파일을 비교하고 첫 번째 파일의 공통 필드와 해당 줄 번호를 인쇄합니다.

파일에 File1.txt라는 원시 데이터가 있습니다.

Colt McCoy QB CLE  135 222 1576    6   9   60.8%   74.51  
Josh Freeman QB TB 291 474 3451    25  6   61.4%   95.9  
Matt Cassel QB KC  262 450 3116    27  7   58.2%   93.0  
Michael Vick QB PHI    233 372 3018    21  6   62.6%   100.2  
Matt Schaub QB HOU 365 574 4370    24  12  63.6%   92.0  

파일 2.txt에는 한 줄에 하나씩 이름 목록이 있습니다.

Josh  
Matt  

이름과 줄 번호를 출력하고 싶습니다. 위의 예에서는 다음과 같습니다.

Josh: 2  
Matt: 3,5  

이름과 줄 번호 목록을 제공하는 명령이 있는데 위에서 요구한 형식으로 인쇄하고 싶습니다. 내 현재 명령은

awk '{print $1, NR}' file1.txt | grep -f file2.txt

보여주다

Josh 2
Matt 3
Matt 5

원하는 형식으로 인쇄하려면 어떻게 해야 합니까?

답변1

awk혼자서 이 작업을 수행할 수 있습니다.

awk 'NR==FNR{seen[$1]=seen[$1]","NR; next};
{if ($1 in seen){printf("%s: %s\n", $1, substr(seen[$1], 2))}}' file2 file1

답변2

당신은 그것을 사용할 수 있습니다 diff -y file1 file2.

두 파일을 나란히 출력합니다. 또한 출력을 구문 분석하기 위한 다른 옵션도 있습니다. 확인하다매뉴얼 페이지더 많은 선택을 위해.

관련 정보