awk를 사용하여 한 파일에서 다른 파일로 데이터를 인쇄하는 방법

awk를 사용하여 한 파일에서 다른 파일로 데이터를 인쇄하는 방법

파일(A.txt; sep="\t")이 있습니다.

blabla  lili
bloblo  lulu

C.txt를 생성하기 위해 B.txt의 특정 위치에 A.txt의 일부 데이터를 인쇄하고 싶습니다.

B.txt(9월=","):

kit
Software Version =
Date And Time of Export =
Experiment Name =
Instrument Software Version =
Instrument Type = CFX
Instrument Serial Number =
Run Start Date =
Run End Date =
Run Operator =
Batch Status = VALID
Method = Novaprime
Date And Time of Export,Batch ID,Sample Name,Well,Sample Type,Status,Interpretive Result,Action*,Curve analysis
,,,,,,,,,,
*reporting.

C.txt 예(sep=","):

kit
Software Version = lili
Date And Time of Export =
Experiment Name =
Instrument Software Version =
Instrument Type = CFX
Instrument Serial Number =
Run Start Date = lulu
Run End Date =
Run Operator =
Batch Status = VALID
Method = Novaprime
Date And Time of Export,Batch ID,Sample Name,Well,Sample Type,Status,Interpretive Result,Action*,Curve analysis
,,,,,,,,,,
*reporting.

비결은 A.txt의 데이터가 B.txt의 $2에 인쇄되도록 B.txt의 구분 기호로 "="를 설정하는 것입니다. 나는 비슷한 것을 시도했습니다 :

awk 'BEGIN{OFS=FS=" = "} NR==2{stuff} ; NR==8{stuff} } 1' A.txt B.txt > C.txt

그러나 나는 그것을 이해하지 못했습니다. 어떤 아이디어가 있나요?

감사해요

답변1

awk -F'\t' '
  FNR==NR{ a[NR]=$2; next }
  FNR==2{ print $0, a[1]; next }
  FNR==8{ print $0, a[2]; next }
  1
' A.txt B.txt > C.txt

또는 더 의미 있는 설명을 사용하면 다음과 같습니다.

awk -F'\t' '
  FNR==NR{ a[NR]=$2; next }
  $1=="Software Version"{ print $0, a[1]; next }
  $1=="Run Start Date"{ print $0, a[2]; next }
  1
' A.txt FS=" =" B.txt > C.txt

관련 정보