설명

설명

2개의 파일이 있습니다.

파일 1에는 다음이 포함됩니다.

emcas_biaas_dev=-628
emcas_brs_ba=-32
emcas_cc_analytics=246
emcas_edservices_bi=312
emcas_edservices_dev=-159
emcas_engr_usd=1519
emcas_engr_xio=-67
emcas_fin_bi=9

파일 2에는 다음이 포함됩니다.

emcas_bdl_migrate=2
emcas_biaas_dev=63
emcas_brs_ba=430
emcas_cc_analytics=2231
emcas_clm_reporting=16
emcas_collab_xsat=6241
emcas_cpsd_cee=11
emcas_cpsd_hcp=0
emcas_e2ep_ba=187
emcas_edservices_bi=955
emcas_edservices_dev=374
emcas_elms_analytics=0
emcas_engr_clm=3
emcas_engr_scaleio=0
emcas_engr_usd=2669
emcas_engr_xio=340
emcas_fin_bi=333
emcas_fin_drr=5528

원하는 출력을 다음과 같이 별도의 파일로 원합니다.

emcas_biaas_dev=-628=63
emcas_brs_ba=-32=430
emcas_cc_analytics=246=2231
emcas_edservices_bi=312=955
emcas_edservices_dev=-159=374
emcas_engr_usd=1519=2669
emcas_engr_xio=-67=340
emcas_fin_bi=9=333

답변1

두 값 모두에 키가 두 파일에 모두 나타나는 필드만 출력하고 싶다고 생각합니다. 에서 언급했듯이스파호크의 답변, 이에 적합한 도구는 입니다 join. AWK를 사용하면 다음이 작동합니다.

#!/usr/bin/awk -f

BEGIN {
    OFS = FS = "="
}

FNR == NR {
    values[$1] = $2
}

FNR < NR {
    if (values[$1]) {
        print $1, values[$1], $2
    }
}

이는 입력 및 출력 필드 구분 기호를 "="로 설정한 다음 첫 번째 파일( FNR == NR)을 구문 분석하고 모든 값을 values연관 배열에 저장한 다음 다음 파일( FNR < NR)을 구문 분석하고 각 줄에 대해 값이 첫 번째 파일에 표시된 키, 저장된 값, 현재 파일의 값을 출력합니다.

답변2

이 작업을 위해 다음보다 간단한 도구가 awk있습니다 join.

join -t '=' -1 1 -2 1 file1.txt file2.txt

설명

자세한 내용은 다음을 참조하세요 man join.

  • -t '=': =구분자로 사용
  • -1 1 -2 1: 파일 1의 필드 1과 파일 2의 필드 1에 조인
  • file1.txt file2.txt: 이 두 파일을 결합합니다.

관련 정보