@JonathanLeffler は、特定の質問に対して適切な awk 回答を提供してくれましたが、その形式のファイルで多くの作業を行う場合は、レコードを改行で区切って各リスト項目を 1 行にするように再フォーマットすることを検討することをお勧めします。 、例:
$ cat file
DSL -
1. Digital Simulation Language. Extensions to FORTRAN to simulate analog
computer functions. "DSL/90 - A Digital Simulation Program for Continuous
System Modelling", Proc SJCC 28, AFIPS (Spring 1966). Version: DSL/90 for
the IBM 7090. Sammet 1969, p.632.
FLIP -
1. Early assembly language on G-15. Listed in CACM 2(5):16 (May 1959).
2. "FLIP User's Manual", G. Kahn, TR 5, INRIA 1981.
3. Formal LIst Processor. Early language for pattern-matching on LISP
structures. Similar to CONVERT. "FLIP, A Format List Processor", W.
Teitelman, Memo MAC-M-263, MIT 1966.
$ awk '!/^[[:space:]]*$/{printf "%s%s", (NF==2 && /-[[:space:]]*$/ ? rs rs : (/^ +[[:digit:]]+\./ ? rs : "")), $0; rs="\n"} END{print ""}' file
DSL -
1. Digital Simulation Language. Extensions to FORTRAN to simulate analogcomputer functions. "DSL/90 - A Digital Simulation Program for ContinuousSystem Modelling", Proc SJCC 28, AFIPS (Spring 1966). Version: DSL/90 forthe IBM 7090. Sammet 1969, p.632.
FLIP -
1. Early assembly language on G-15. Listed in CACM 2(5):16 (May 1959).
2. "FLIP User's Manual", G. Kahn, TR 5, INRIA 1981.
3. Formal LIst Processor. Early language for pattern-matching on LISPstructures. Similar to CONVERT. "FLIP, A Format List Processor", W.Teitelman, Memo MAC-M-263, MIT 1966.
そうすれば、出力を簡単に処理して印刷したり、必要なことをしたりできます。
1) すべてのヘッダー行と最初の箇条書き項目を印刷するには:
$ awk '...' file | awk 'BEGIN{RS=""; ORS="\n\n"; FS=OFS="\n"} {print $1,$2}'
DSL -
1. Digital Simulation Language. Extensions to FORTRAN to simulate analogcomputer functions. "DSL/90 - A Digital Simulation Program for ContinuousSystem Modelling", Proc SJCC 28, AFIPS (Spring 1966). Version: DSL/90 forthe IBM 7090. Sammet 1969, p.632.
FLIP -
1. Early assembly language on G-15. Listed in CACM 2(5):16 (May 1959).
2) ヘッダー行と "FLIP" レコードの 2 番目の箇条書き項目を印刷するには:
$ awk '...' file | awk 'BEGIN{RS=""; ORS="\n\n"; FS=OFS="\n"} /^FLIP -/{print $1,$3}'
FLIP -
2. "FLIP User's Manual", G. Kahn, TR 5, INRIA 1981.
3) ヘッダー行とそのヘッダーの箇条書き項目の数を印刷するには:
$ awk '...' file | awk 'BEGIN{RS=""; FS=OFS="\n"} {print $1 NF-1}'
DSL - 1
FLIP - 3
などなど