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