
다음과 같이 2개의 파일이 있습니다.
section_ne.csv
NE_section,,,,,,,,,,,,,,,,,,,,,,,
D,NE Name,IP Address,Site Name,en Product Legacy Code,en Product Legacy Revision,Product Model,NE Status,company Serial Number,company SW Major Release,company SW Minor Release,company SW Patch Release,Manufacturing Date,Installation Date ,Into Service Date ,Licensed System ID,Licensed Key,Decommissioning Date,Description,,,,,
X,ts,1.1.1.26,,,,Linux,,,9.6.02,356349,,,,,,,,A,,,,,
X,ts_I,1.1.1.26,,,,Linux,,,9.6.02,356272,,,,,,,,I,,,,,
X,ts_O,1.1.1.26,,,,Linux,,,9.6.01,348219,,,,,,,,O,,,,,
X,ts_S,1.1.1.26,,,,Linux,,,9.6.02,356272,,,,,,,,S,,,,,
X,1.1.88.83,1.1.88.83,,,,O-M,,,4.8,a7gpaa48.766,,,,,,,,,,,,,
X,is180,10.5.5.180,,,,N-D,,,5.2,a6gpaa52.604,,,,,,,,,,,,,
X,is171,10.5.5.171,,,,N-F,,,5.4,a6gpaa54.431,,,,,,,,,,,,,
X,is174,10.5.5.174,,,,N-F,,,5.4,a6gpaa54.431,,,,,,,,,,,,,
X,Detected_at_10.5.5.106,10.5.5.106,,,,N-B,,,5.5,a6gpaa55.568,,,,,,,,,,,,,
X,is112,10.5.5.112,,,,N-A,,,5.5,a6gpaa55.574,,,,,,,,,,,,,
X,is107,10.5.5.107,,,,N-A,,,5.6,a6gpaa56.561,,,,,,,,,,,,,
X,172.29.7.227,172.29.7.227,,,,N-D,,,5.6,a6gpaa56.175,,,,,,,,,,,,,
X,Detected_at_10.5.5.121,10.5.5.121,,,,N-A,,,5.6,a6gpaa56.462,,,,,,,,,,,,,
X,is172,10.5.5.172,,,,N-F,,,5.6,a6gpaa56.561,,,,,,,,,,,,,
X,is179,10.5.5.179,,,,N-D,,,5.6,a6gpaa56.561,,,,,,,,,,,,,
X,is181,10.5.5.181,,,,N-D,,,5.6,a6gpaa56.453,,,,,,,,,,,,,
X,eyup,10.5.5.91,,,,C-A,,,5.6,a6gpaa56.557,,,,,,,,,,,,,
...
find.csv
Patch_release,Build
5.7.02,
5.7.01e,57.345
5.7.01,57.324
5.7.00c,57.161
5.7.00a,57.160
5.7,57.145
5.6.02d,
5.6.02b,56.574
5.6.02a,56.562
5.6.02,56.561
5.6.01j,56.463
5.6.01g,56.476
5.6.01f,
5.6.01e,56.488
5.6.01c,56.462
5.6.01b,56.453
5.6.01a,56.452
5.6.01,56.439
5.6.00a,56.157
5.6,56.153
5.5.02h,
5.5.02g,55.598
...
나는 다음을 수행하고 싶습니다 :
- 이 파일을 awk와 비교하세요
- section_ne.csv(회사 소프트웨어 부 버전)의 11번째 필드에 lookup.csv(두 번째 열)에 나열된 버전이 포함되어 있는 경우 lookup.csv 테이블에서 일치하는 Patch_release 값을 가져오고 section_ne.csv 문서를 업데이트하세요.
- 이 Patch_release 값을 section_ne.csv(회사 소프트웨어 패치 버전)의 필드 12에 넣습니다.
예를 들어:
NE_section,,,,,,,,,,,,,,,,,,,,,,,
D,NE Name,IP Address,Site Name,en Product Legacy Code,en Product Legacy Revision,Product Model,NE Status,company Serial Number,company SW Major Release,company SW Minor Release,company SW Patch Release,Manufacturing Date,Installation Date ,Into Service Date ,Licensed System ID,Licensed Key,Decommissioning Date,Description,,,,,
...
X,is107,10.5.5.107,,,,N-A,,,5.6,a6gpaa56.561,,,,,,,,,,,,,
...
이 항목은 lookup.csv 파일의 다음 항목과 일치합니다.
5.6.02,56.561
그러면 section_ne.csv 파일의 관련 항목이 다음과 같이 업데이트됩니다.
X,is107,10.5.5.107,,,,N-A,,,5.6,a6gpaa56.561,5.6.02,,,,,,,,,,,,
답변1
이게 당신 생각이었나요? 간단한 더러운 예:
$ sort -V -t , -k 1 lookup.csv > lookup_sorted.csv
$ sort -V -t , -k 10 section_ne.csv > section_ne_sorted.csv
$ join -1 10 -2 1 -t , section_ne_sorted.csv lookup_sorted.csv
5.6,X,172.29.7.227,172.29.7.227,,,,N-D,,,a6gpaa56.175,,,,,,,,,,,,,,56.153
5.6,X,is181,10.5.5.181,,,,N-D,,,a6gpaa56.453,,,,,,,,,,,,,,56.153
5.6,X,Detected_at_10.5.5.121,10.5.5.121,,,,N-A,,,a6gpaa56.462,,,,,,,,,,,,,,56.153
5.6,X,eyup,10.5.5.91,,,,C-A,,,a6gpaa56.557,,,,,,,,,,,,,,56.153
5.6,X,is107,10.5.5.107,,,,N-A,,,a6gpaa56.561,,,,,,,,,,,,,,56.153
5.6,X,is172,10.5.5.172,,,,N-F,,,a6gpaa56.561,,,,,,,,,,,,,,56.153
5.6,X,is179,10.5.5.179,,,,N-D,,,a6gpaa56.561,,,,,,,,,,,,,,56.153
join: file 2 is not in sorted order
join: file 1 is not in sorted order