標準化されたPDFファイルから抽出されたテキストファイルを解析するシェルスクリプトを作成しています。各テストグループ(グループ0、グループ1...として識別されます)のテスト番号のリストを取得したい(たとえば、グループ0の場合は101、102、412...)。 sed、awkを試しましたが、理想的には出力をLaTeXコードに変換したいと思います。つまり、各出力項目は適切な文字列で囲まれています。
\section{Group0}
\Testdetails{101}
\Testdetails{102}
...............
\section{Group1}
\Testdetails{305}
................
これがソースファイルです。
Table 6
Tests EN 2591- Remarks
All models
Group 0
Visual examination 101
Examination of dimensions and mass 102 To be performed on one pair per layout, in
sealed and un-sealed versions
Contact insertion and extraction forces 412 To be performed on one pair per layout, in
sealed and un-sealed versions
Measurement of insulation resistance 206 Only specimens of group 6
Voltage proof test 207 Only specimens of group 6
Contact resistance - Low level 201
Contact resistance at rated current 202
Mating and unmating forces 408 On specimens of groups 2, 4 and 6
Visual examination 101
Group 1
Rapid change of temperature 305
Visual examination 101
Interfacial sealing 324
Measurement of insulation resistance 206 Immersed connectors
Voltage proof test 207 Immersed connectors
Insert retention in housing (axial) 410
Contact retention in insert 409
Mechanical strength of rear accessories 420
Contact retention system effectiveness 426
(removable contact walkout)
Visual examination 101
Group 2
Contact retention in insert 409
Rapid change of temperature 305
ベストアンサー1
awk '
$1 == "Group" {printf("\\section{%s%d}\n", $1, $2); next}
{for (i=1; i<=NF; i++)
if ($i ~ /^[0-9][0-9][0-9]$/) {
printf("\\Testdetails{%d}\n", $i)
break
}
}
'
コメントに基づいて更新:
awk '
$1 == "Group" {printf("\\section{%s %d}\n", $1, $2); next}
{
title = sep = ""
for (i=1; i<=NF; i++)
if ($i ~ /^[0-9][0-9][0-9]$/) {
printf("\\subsection{%s} \\Testdetails{%d}\n", title, $i)
break
}
else {
title = title sep $i
sep = FS
}
}
'