두 텍스트 파일의 두 번째 열을 비교하고 일치하는 경우 두 파일의 첫 번째 열을 인쇄합니다.

금연 건강 증진 협회

두 텍스트 파일의 두 번째 열을 비교하고 일치하는 경우 두 파일의 첫 번째 열을 인쇄하려고합니다.

아래 awk코드를 시도했지만 소용이 없었습니다.

1) awk 'NR==FNR {a[$2]=$2; next} {print $1,a[$1]}' nid8.txt nid9.txt

2) awk 'NR==FNR {a[$2]=$2; next} {print $1, $1 in a}' nid8.txt nid9.txt

예제 파일 :

nid8.txt :

1000 500
1001 501
1002 502
1003 503
1004 504
1005 505

nid9.txt :

2000 504
2001 502
2002 508
2003 505
2004 500
2005 501

산출:

1000 2004
1001 2005
1002 2001
1004 2000
1005 2003
αғsнιη

join여기에서 사용할 수 있습니다 .

join -j 2 -o 1.1 2.1 <(sort -nk2,2 nid8.txt) <(sort -nk2,2 nid9.txt)

-j 2두 파일 의 두 번째 필드 를 키로 사용하십시오.

그리고 -o이 필드 utput :
첫 번째 필드 첫 번째 파일에서 1.1
첫 번째 필드 두 번째 파일에서2.1

join입력 파일을 정렬해야하므로 숫자로 키로 사용될 두 번째 필드에서 정렬합니다 sort -nk2,2 input.


사용하여 awk정렬 된 입력을 가지고 있지만 메모리에 먼저 입력 파일을로드 할 필요가있는 :

awk '!second_file{ my_array[$2]=$1; next }
     ($2 in my_array) { print $1, my_array[$2] }' nid8.txt second_file=1 nid9.txt

함께 my_array[$2]=$1우리는 먼저 입력 파일의 첫 번째 열에 저장된다 nid8.txt 키가 될 때까지 동일한 첫번째 파일의 두 번째 열에 만 second_file변수 값으로 설정되지 않은 하나 의 원인이되는 !second_file식의 값이 거짓으로 평가하고 다음에 대해 해당 블록이 실행되지 않을 것이다 입력.

($2 in my_array)조건을 사용 하여 두 번째 필드가 배열 my_array 에 존재하는지 여부를 확인하고, 존재한다면 첫 번째 필드 $1(두 번째 파일에서 가져옴)와 my_array[$2]첫 번째 파일의 첫 번째 필드를 포함 하는 동일한 키의 값을 인쇄 합니다. 와 같은 키 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관