두 파일의 문자열을 비교하고 출력을 병합합니다.

두 파일의 문자열을 비교하고 출력을 병합합니다.

한 파일에서 도메인의 대역폭을 가져오고 다른 파일에서는 클릭 세부정보를 가져오려고 합니다.

두 파일의 형식은 다음과 같습니다.

  1. 대역폭.txt

    aadrivingschool.ws       2840.36M
    aaspak.org               211.57M
    aasteknik.com            1419.26M
    aatonerpk.com            14.87M
    
  2. 히트.txt:

    onlinestudyboard.com   received  186     hits  from  31/May/2016  at  1201
    aaspak.org             received  184     hits  from  31/May/2016  at  1202
    khawajarubber.com      received  183     hits  from  31/May/2016  at  1246
    aatonerpk.com          received  182     hits  from  31/May/2016  at  1231
    

내가 얻고 싶은 것은 :

onlinestudyboard.com       received  186     hits  from  31/May/2016  at  1201 
aaspak.org                 received  184     hits  from  31/May/2016  at  1202  211.57M
khawajarubber.com          received  183     hits  from  31/May/2016  at  1246
aatonerpk.com              received  182     hits  from  31/May/2016  at  1231  14.87M

답변1

awk한 가지 방법 은 다음과 같습니다 .

$ awk 'FNR==NR{a[$1]=$2; next} {print $0,a[$1]}' bandwidth.txt hits.txt
onlinestudyboard.com     received  186     hits  from  31/May/2016  at  1201 
aaspak.org               received  184     hits  from  31/May/2016  at  1202 211.57M
khawajarubber.com        received  183     hits  from  31/May/2016  at  1246 
aatonerpk.com            received  182     hits  from  31/May/2016  at  1231 14.87M

설명하다

awk입력 파일을 한 줄씩 읽고 줄을 공백(또는 주어진 항목 -F)의 필드로 분할합니다. 이러한 필드는 $1$2 ...$N`입니다.

  • NR==FNR: NR은 현재 줄 번호, FNR은 현재 파일의 줄 번호입니다. 첫 번째 파일을 읽는 경우에만 둘 다 동일합니다.
  • a[$1]=$2; next: 이것이 첫 번째 파일인 경우(위 참조) 키가 첫 번째 필드인 배열에 두 번째 필드를 저장합니다.
  • print $0,a[$1]:현재 행( )과 첫 번째 필드와 연관된 배열 $0의 값을 인쇄합니다. a그러면 두 번째 파일의 현재 줄과 첫 번째 파일의 첫 번째 필드와 관련된 모든 값이 인쇄됩니다.

답변2

그리고유형편집하다 가입하다,기둥그리고 일부세게 때리다교의:

join -a 1 <(sort hits.txt) <(sort bandwidth.txt) | column -t | sort -nrk3

세 가지 유형이 필요합니다. 두 번째는 입력 파일이 공통 필드별로 정렬되지 않기 때문입니다.가입하다정렬된 입력이 필요합니다. 다른유형(세 번째 필드, 역방향 숫자)는 OP의 정렬 순서를 복원하는 데 필요합니다.

산출:

onlinestudyboard.com  received  186  hits  from  31/May/2016  at  1201
aaspak.org            received  184  hits  from  31/May/2016  at  1202  211.57M
khawajarubber.com     received  183  hits  from  31/May/2016  at  1246
aatonerpk.com         received  182  hits  from  31/May/2016  at  1231  14.87M

출력 순서가 중요하지 않고 입력 파일이사전 분류:

join -a 1 hits.txt bandwidth.txt | column -t

관련 정보