Dfill [ options ] field-list [ input-file.. ]
Dfill は,field-listで指定されたフィールドの 空フィールドを,前のレコードの空でない 値から埋める。 Dfillは,通常,表を処理するために DfromHtmlや DfromCsvなどと ともに用いられる。 このため,以下の例では,Dレコードを対応する 表の形式で示す。
ある種の表では,空欄によって「同上」を表す。 たとえば:
|
|
左の表では,2008年10月から2009年3月までのrateを 示していると解釈するのが自然である。 これをDレコードで表す場合,2番目と3番目のレコードにはyear:2008を補填し,また 5番目と6番目のレコードには year:2009を補填しなければならない。
Dfill year
によって,この操作を行える。
ここで「空フィールド」と呼んだものは, 空値(Dレコード中に当該フィールドがない)または 空文字列のフィールドをいう。 (フィールドが繰り返す場合,すべての値が空文字列であること)。 ただし,-bオプションの指定によって, 空値のみを空フィールドとして扱うことができる。
field-listには,複数フィールドを指定できる。 この場合,これらのフィールドは階層的に扱われる。 すなわち,上位(前に指定された)フィールドの 値が変わった場合,下位(後ろに指定された)フィールドの 値は,キャンセルされる。 たとえば,
|
|
この表でフィールドリストをyear,monthとすると, 5番目のレコードのmonthフィールドは (それが何を意味するかはともかく)空値となる。 一方,4番目のレコードでは year:2008とmonth:12とが補填され, 6番目のレコードには year:2009が補填される。 (もちろん,2番目のレコードには, year:2008およびmonth:11が, 3番目のレコードには year:2008が補填される。)
階層的な取り扱いが不適当で, 各フィールドを独立に扱いたい場合は, 次の例のようにDfillを連続使用すればよい。
Dfill field-a input-file | Dfill field-b
複数フィールド指定のもう一つの場合として 集合的フィールドがある。 これは,-aを指定した場合適用される。 この場合,リストされたどのフィールドの値が変わっても 新しい値として扱われる。 たとえば,
ISBN | ISSN | tag | value |
---|---|---|---|
0028-0836 | title | Nature | |
description | v. 1- Nov. 4, 1869- | ||
publisher | [London, etc., Macmillan Journals Ltd., etc.] | ||
0131101633 | title | The C programming language | |
author | Brian W. Kernighan, Dennis M. Ritchie | ||
publisher | Englewood Cliffs, N.J. : Prentice-Hall, c1978 |
この表に対してDfill -a ISBN,ISSN を行うと,次のようになる。
ISBN | ISSN | tag | value |
---|---|---|---|
0028-0836 | title | Nature | |
0028-0836 | description | v. 1- Nov. 4, 1869- | |
0028-0836 | publisher | [London, etc., Macmillan Journals Ltd., etc.] | |
0131101633 | title | The C programming language | |
0131101633 | author | Brian W. Kernighan, Dennis M. Ritchie | |
0131101633 | publisher | Englewood Cliffs, N.J. : Prentice-Hall, c1978 |
出力レコードのフィールド順は, 補填されるレコードと,補填するレコードのフィールドの 最短共通順となる。 ただし,フィールド数が多い (一方のフィールド数が512を超える,あるいは双方の フィールド数の積が65536を超える)場合, 補填フィールドを先に,その他のフィールドを その後ろに出力する。
マニュアル D_msg参照。
MIYAZAWA Akira