
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
: 이 두 파일을 결합합니다.