정렬과 참여를 동시에 하는 방법은 무엇입니까?

정렬과 참여를 동시에 하는 방법은 무엇입니까?

2개의 파일이 있는데 하나에는 2개의 열이 있고 다른 하나에는 1개의 열이 있습니다.
두 번째 파일은 정렬을 사용합니다 sort -u.
이제 작업은 이 열을 정렬되지 않은 첫 번째 파일의 첫 번째 열과 결합해야 한다는 것입니다.

그렇다면 구문은 무엇입니까? 작동 할까요 join -j 1 file2.txt sort -s -n -k 1 file1.txt?

내가 원하는 출력은 실제로 결합 후 파일 2의 두 번째 열이자 그 안에 있는 유일한 항목입니다.

파일 2


1
2
3

파일 1


2  500
1  5000 
1  300
3  3000 
3  300
4  450

산출


5000
300
500
3000

답변1

<(...)여기서는 비표준 프로세스 교체( )를 사용할 필요가 없습니다 .

sort file1 | join -o1.2 - file2 | uniq

답변2

join file2.txt <(sort file1.txt) | awk '{print $2}'

답변3

sort+ 를 사용하는 방법 awk. 안정 모드에서 다른 파일을 첫 번째 숫자로 정렬하고 있습니다. 어떤 awk키를 비교했습니까?파일 1매치 키파일 2반복하지 말고 다음을 인쇄하세요.

sort -snk1,1 file1 | awk '
    FNR == NR { 
        keys[ $1 ] = 1; 
        next; 
    } 
    !values[ $2 ] && keys[ $1 ] { 
        printf "%s\n", $2; 
        values[ $2 ] = 1; 
    }
' file2 -

산출:

5000
300
500
3000

관련 정보