awk에서 패턴이 발견되면 데이터를 인쇄하는 방법

awk에서 패턴이 발견되면 데이터를 인쇄하는 방법

파일(A.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
,,205920777.1,A01,Unkn-01,,,
,,neg5,A02,Neg Ctrl-01,,,
,,pos6,A03,Pos Ctrl-01,,,
,,,,,,,,,,
*reporting.

"Sample Type" 열에 "Unkn"인 경우 "Patient"라는 패턴이 포함된 경우 "Explained Results" 열에 "Negative"인 경우 "NC", "Pos"인 경우 "PC"를 인쇄하고 싶습니다. 다음 출력을 얻으려면(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
,,205920777.1,A01,Unkn-01,,Patient,,
,,neg5,A02,Neg Ctrl-01,,NC,,
,,pos6,A03,Pos Ctrl-01,,PC,,
,,,,,,,,,,
*reporting.

나는 비슷한 것을 시도했습니다 :

awk -F',' -v OFS="," '(NR>1 && $5="Unkn"*){print ...}' A.txt > B.txt

그러나 나는 이 문제를 해결할 수 없었다. 누군가 아이디어를 가질 수 있습니까?

감사해요

답변1

윗분 말씀대로 비교가 필요합니다 ==. 그러나 ~연산자를 사용하여 필드를 정규식과 비교하는 것이 바로 그 목적입니다.

pat.awk:

BEGIN{FS=OFS=","}
$5 ~ /Unkn/{$7="Patient,"}
$5 ~ /Neg/{$7="NC,"}
$5 ~ /Pos/{$7="PC,"}
{print}
$ awk -f pat.awk A.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,,Patient,,
,,neg5,A02,Neg Ctrl-01,,NC,,
,,pos6,A03,Pos Ctrl-01,,PC,,
,,,,,,,,,,
*reporting.

한 줄을 선호하는 경우:

awk -F ',' -v OFS=',' '$5~/Unkn/{$7="Patient,"}$5~/Neg/{$7="NC,"}$5~/Pos/{$7="PC,"}1' A.txt

관련 정보