몇 가지 정보가 포함된 파일( A.txt ; sep="\t" , 첫 번째 열은 "\t")이 있습니다.
Well Fluor Target Content Sample Cq SQ
A01 Cy5 EC Unkn-01 205920777.1 25.714557922167 NaN
A01 FAM Covid Unkn-01 205920777.1 21.6541150578409 NaN
A02 Cy5 EC Unkn-09 neg5 25.5068289526473 NaN
A02 FAM Covid Unkn-09 neg5 NaN NaN
A07 Cy5 EC Unkn-49 NaN NaN
A07 FAM Covid Unkn-49 NaN NaN
템플릿(B.txt;sep=",")이 있습니다.
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.
B.txt 템플릿을 사용하여 A.txt 정보를 C.txt에 넣고 싶습니다. C.txt:
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
,,205920777.1,A01,Unkn-01
,,neg5,A02,Unkn-09
,,,,,,,,,,
*reporting.
비결은 A.txt에서 열 5가 비어 있지 않은 줄만 인쇄하는 것입니다. 나는 다음을 시도했습니다 :
awk 'NR==FNR{a[$5]=$1;next}{print $1,$2,a[$1]} ' A.txt B.txt > C.txt
하지만 B.txt에 비슷한 키가 없기 때문에 작동하지 않습니다. 그리고 구분 기호의 차이도 문제입니다. 누군가 아이디어를 가질 수 있습니까?
감사해요
답변1
말씀하신 대로 파일의 첫 번째 열이 비어 있다고 가정하면 모든 항목을 왼쪽으로 이동해야 합니다. 5번 필드라고 하면 실제로는 6번 필드입니다. 어쨌든, 제가 생각할 수 있는 가장 쉬운 방법은 먼저 A.txt
사용할 수 있는 형식으로 파일을 수정하는 것입니다.
$ awk -F'\t' -v OFS="," '(NR>1 && $6!="NaN"){print ",",$6,$2,$5}' A.txt | sort | uniq
,,205920777.1,A01,Unkn-01
,,neg5,A02,Unkn-09
이렇게 하면 에 삽입하려는 내용이 제공됩니다 C.txt
. 따라서 이를 추가하려면 다음과 같이 우아하지 않은 작업을 수행할 수 있습니다.
( head -n 13 B.txt
awk -F'\t' -v OFS="," '(NR>1 && $6!="NaN"){print ",",$6,$2,$5}' A.txt | sort | uniq
tail -n+14 B.txt ) > C.txt
다음을 생성합니다.
$ cat C.txt
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
,,205920777.1,A01,Unkn-01
,,neg5,A02,Unkn-09
,,,,,,,,,,
*reporting.