이 형식의 파일이 두 개 있습니다.
File1: id:0.0260509118455
File2: id:X:Y
file1의 모든 줄이 동일한 ID를 포함하는 두 번째 파일의 줄과 연결된 세 번째 파일을 얻고 싶습니다. 즉:
File3: id:0.0260509118455:X:Y
(파일 1에는 100줄, 파일 2에는 666줄) 페어링할 수 없는 회선이 없습니다.
답변1
데이터베이스 테이블이 포함된 파일을 조인하려면 join
테이블을 키 순서로 정렬한 후 다음 명령을 사용하십시오.
sort -b -t : 파일 1 > 파일 1 정렬 sort -b -t : 파일 2 > 파일 2 정렬 Join -t: 파일 1 정렬 파일 2 정렬
추가 읽기
- "유틸리티: 가입". 쉘 명령 언어. 단일 UNIX 사양. 이슈 7. IEEE 1003.1. 2016. 그룹을 엽니다.
- 공통 열 값을 사용하여 파일 병합
답변2
이 작업을 수행하려면 붙여넣기 명령을 사용할 수 있어야 합니다. 행 대신 열을 읽습니다.
awk -F: '{ print $2}' File2 > File4
ID 삭제: 태그
그 다음에
paste File1 File4 > File3
일을 해야 합니다.
답변3
어떤 방식으로든 파일을 정렬하거나 전처리하지 않고 awk를 사용하여 ID를 확인할 수도 있습니다.
awk -F: 'NR==FNR{a[$1]=$0;next}$1 in a {print a[$1],$2,$3}' OFS=: file1 file2 >file3
PS: 성능을 위해 작은 파일(파일 1 100줄)이 먼저 메모리에 로드된 다음 큰 파일이 메모리와 비교됩니다.