두 파일의 여러 열을 일치시키고 인쇄합니다.

두 파일의 여러 열을 일치시키고 인쇄합니다.

두 개의 파일이 있는데, 내가 해야 할 일은 두 파일의 column1을 기반으로 공통 행을 찾고, 일치하는 경우 새 파일 col1(두 파일 사이의 공통) file1col2 및 file2col2에 쓰는 것입니다.

파일 1:

col1                         file1col2
10:100000525-100001560(+)    0.971465226620556
10:100001724-100002618(+)    0.940918504451204
10:100002725-100002970(+)    0.946592696189412
10:100003104-100004184(+)    0.736305487299153
10:100004450-100005051(+)    0.70823022283736
10:100005158-100005876(+)    0.969728923411704
10:100006075-100007551(+)    0.855411430976336
10:100007764-100009009(+)    0.274219271261146
10:100009146-100011362(+)    0.927057564779308
10:100011583-100011887(+)    0.883431738847249

파일 2

col1                         file2col2
10:100000525-100001560(+)    0.943385996874889
10:100001724-100002618(+)    0.981929023174133
10:100002725-100002970(+)    0.955549170283206
10:100003104-100004184(+)    0.736440826679551
10:100004450-100005051(+)    0.689045711238636
10:100005158-100005876(+)    0.964995337925152
10:100006075-100007551(+)    0.873411848029685
10:100007764-100009009(+)    0.37719743446494
10:100009146-100011362(+)    0.943862343124518
10:100011583-100011887(+)    0.902915705720447

원하는 출력

col1(common between two files)  file1col2   file2col2
10:100000525-100001560(+)   0.971465227 0.943385997
10:100001724-100002618(+)   0.940918504 0.981929023
10:100002725-100002970(+)   0.946592696 0.95554917
10:100003104-100004184(+)   0.736305487 0.736440827
10:100004450-100005051(+)   0.708230223 0.689045711
10:100005158-100005876(+)   0.969728923 0.964995338
10:100006075-100007551(+)   0.855411431 0.873411848
10:100007764-100009009(+)   0.274219271 0.377197434
10:100009146-100011362(+)   0.927057565 0.943862343
10:100011583-100011887(+)   0.883431739 0.902915706

답변1

가입하다+해결책:

join --header file1 file2 | awk 'NR>1{ $2=sprintf("%1.9f",$2); $3=sprintf("%.9f",$3) }1' > result.txt

cat result.txt
col1 file1col2 file2col2
10:100000525-100001560(+) 0.971465227 0.943385997
10:100001724-100002618(+) 0.940918504 0.981929023
10:100002725-100002970(+) 0.946592696 0.955549170
10:100003104-100004184(+) 0.736305487 0.736440827
10:100004450-100005051(+) 0.708230223 0.689045711
10:100005158-100005876(+) 0.969728923 0.964995338
10:100006075-100007551(+) 0.855411431 0.873411848
10:100007764-100009009(+) 0.274219271 0.377197434
10:100009146-100011362(+) 0.927057565 0.943862343
10:100011583-100011887(+) 0.883431739 0.902915706

세부 사항:

  • 가입하다 --header옵션 - 각 파일의 첫 번째 줄을 필드 헤더로 처리하고 쌍을 이루지 않고 인쇄합니다.

  • NR>1- 두 번째 레코드부터 처리 시작( NR- 현재 레코드의 번호), 즉 - 건너뛰기머리글철사

  • sprintf("%1.9f",$2)- $2인수(두 번째 열)를 소수점 9자리의 부동 소수점 숫자로 형식화합니다.

관련 정보