스키마 파일은 awk/sed/grep에서 RS 및 FS에 대한 입력으로 사용되어 열을 식별하고 추가합니다.

스키마 파일은 awk/sed/grep에서 RS 및 FS에 대한 입력으로 사용되어 열을 식별하고 추가합니다.

주어진 데이터 세트에서 찾아 데이터 열에 숫자를 추가해야 하는 패턴이 포함된 파일이 있습니다. 스크립트를 작성하거나 awk/sed/grep을 사용하여 특정 파일에 패턴을 자동으로 쿼리하여 내가 가지고 있는 데이터와 교차 확인하고 일치하는 패턴이 있는 열에 숫자를 추가하고 싶습니다.

예:-

데이터

제목, 개수, RESA

10th ECOMF,PAB  1   MAT

10th ICOCPS (CPV-'10)   23  SCI

10th ICOCPS (CPV-'10)   6   SCI

10th ICOMAMOS (M2S-X)   3   EEE

JOP 32  COP

AIP 34  Sff

JOP 43  COP

HIT 42  tilde

내 스키마 파일에 저널 이름이 포함되어 있습니다:-

10th ECOMF,PAB

10th ICOCPS (CPV-'10)

10th ICOCPS (CPV-'10)

10th ICOMAMOS (M2S-X)

JOP

AIP

JOP

HIT

SUPERCONDUCTIVITY (M2S-X)

원하는 출력:

10th ECOMF,PAB  1

10th ICOCPS (CPV-'10)   29

10th ICOMAMOS (M2S-X)   3

JOP 75

AIP 34

HIT 42

.

.

곧,

추신:- 데이터는 탭으로 구분되어 있으며 동일한 데이터가 CSV에 있습니다.

답변1

해결책:

awk 'BEGIN{ FS=OFS="\t" }
     NR==FNR{ if(NF && !($0 in b)) { a[++c]=$0; b[$0] } next }{ b[$1]+=$2 }
     END{ len=length(a); for(i=1;i<=len;i++) if(a[i] in b) print a[i],b[a[i]] }' patterns data

  • BEGIN{ FS=OFS="\t" }- 필드 구분 기호 설정

  • a[++c]=$0; b[$0]- 독특한 수집잡지patterns파일의 이름

  • b[$1]+=$2- 각 숫자를 요약잡지data파일의 이름

  • if(a[i] in b) print a[i],b[a[i]]- 각각의 합계 값을 추가합니다.잡지pattern파일의 이름

산출:

10th ECOMF,PAB  1
10th ICOCPS (CPV-'10)   29
10th ICOMAMOS (M2S-X)   3
JOP 75
AIP 34
HIT 42
...

관련 정보