私は、awk
「Check」と「Result」という 2 つの文字列の間のテキストを読み取るために使用しています。インターネットで見つけたさまざまなバリエーションを使用しましたが、それでも望ましい結果が得られません。私は以下を試しました:
awk "/Check:/,/Result:/ {print}" BMSCA209-040-transfer-report.18-Jun-2014.11:18.csv.tmp | more
また、次のことも試しました:
sed -n "/Check:/,/Result:/p" BMSCA209-040-transfer-report.18-Jun-2014.11:18.csv.tmp | more
それでも、私が望むものはまだ得られません。毎回、私が得るのはこれです:
ata> <data fieldName="Timepoint ID" value="B01 SCREENING"/> <data fieldName="SQCSummary" value=" Nothing Submission Quality and Compliance Report - 201
4-06-03T14:30:00.547-07:00Check: Ensure slice thickness is between 2mm and 5mmResult: FailReason: Image(s) found with slice thickness out of range. Instanc
e 1.2.840.113619.2.55.3.4094358250.93.1395417628.479.369 found with slice thickness out of range : 1.25 Instance 1.2.840.113619.2.55.3.4094358250.93.139541
7628.479.368 found with slice thickness out of range : 1.25 Instance 1.2.840.113619.2.55.3.4094358250.93.1395417628.479.367 found with slice thickness out
of range : 1.25 Instance 1.2.840.113619.2.55.3.4094358250.93.1395417628.479.366 found with slice thickness out of range : 1.25 Instance 1.2.840.113619.2.
55.3.4094358250.93.1395417628.479.365 found with slice thickness out of range : 1.25 Instance 1.2.840.113619.2.55.3.4094358250.93.1395417628.479.364 found
with slice thickness out of range : 1.25 Instance 1.2.840.113619.2.55.3.4094358250.93.1395417628.479.363 found with slice thickness out of range : 1.25 I
nstance 1.2.840.113619.2.55.3.4094358250.93.1395417628.479.362 found with slice thickness out of range : 1.25 Instance 1.2.840.113619.2.55.3.4094358250.93.
1395417628.479.361 found with slice thickness out of range : 1.25 Instance 1.2.840.113619.2.55.3.4094358250.93.1395417628.479.360 found with slice thicknes
他に何か提案はありますか?
答え1
とperl
:
perl -l -0777 -ne 'print for /Check: (.*?)Result:/gs' < file
GNU の場合grep
、(ほぼ)同等のものは次のようになります。
grep -zPo '(?s)Check: \K.*?(?=Result:)' < file
または、以下を使用しますpcregrep
:
pcregrep -Mo1 '(?s)Check: (.*?)Result:' < file
出力:
Ensure Modality is the same for all images in a DICOM series.
Ensure SeriesDate is in the proper DICOM format (YYYYMMDD) for all images.
[...]
答え2
あなたの問題に対する私の解決策:
grep
次のように bash 文字列操作を使用します。
RES="$(cat BMSCA209-040-transfer-report.18-Jun-2014.11:18.csv.tmp | egrep -o 'Check.*Result')"
RES=${RES%Result}
RES=${RES#Check: }
echo $RES
それでおしまい :)
結果は次のとおりです:
Ensure slice thickness is between 2mm and 5mm