Dfill - 空フィールドの補填

[ 英語 | 日本語 ]

[Dホームページへ]

形式

Dfill [ options ] field-list [ input-file.. ]

説明

Dfill は,field-listで指定されたフィールドの 空フィールドを,前のレコードの空でない 値から埋める。 Dfillは,通常,表を処理するために DfromHtmlDfromCsvなどと ともに用いられる。 このため,以下の例では,Dレコードを対応する 表の形式で示す。

ある種の表では,空欄によって「同上」を表す。 たとえば:

 
yearmonthrate
200810100.73
 1197.11
 1291.44
20090190.31
 0292.51
 0397.71
  
Result of Dfill year
yearmonthrate
200810100.73
20081197.11
20081291.44
20090190.31
20090292.51
20090397.71

左の表では,2008年10月から2009年3月までのrateを 示していると解釈するのが自然である。 これをDレコードで表す場合,2番目と3番目のレコードにはyear:2008を補填し,また 5番目と6番目のレコードには year:2009を補填しなければならない。

Dfill year

によって,この操作を行える。

空フィールド

ここで「空フィールド」と呼んだものは, 空値(Dレコード中に当該フィールドがない)または 空文字列のフィールドをいう。 (フィールドが繰り返す場合,すべての値が空文字列であること)。 ただし,-bオプションの指定によって, 空値のみを空フィールドとして扱うことができる。

field-listには,複数フィールドを指定できる。 この場合,これらのフィールドは階層的に扱われる。 すなわち,上位(前に指定された)フィールドの 値が変わった場合,下位(後ろに指定された)フィールドの 値は,キャンセルされる。 たとえば,

 
yearmonthcurrencyrate
200811EUR0.785
  JPY97.11
 12EUR0.743
  JPY91.44
2009 EUR0.713
  JPY93.17
  
Result of Dfill year,month
yearmonthcurrencyrate
200811EUR0.785
200811JPY97.11
200812EUR0.743
200812JPY91.44
2009 EUR0.713
2009 JPY93.17

この表でフィールドリストをyear,monthとすると, 5番目のレコードのmonthフィールドは (それが何を意味するかはともかく)空値となる。 一方,4番目のレコードでは year:2008month:12とが補填され, 6番目のレコードには year:2009が補填される。 (もちろん,2番目のレコードには, year:2008およびmonth:11が, 3番目のレコードには year:2008が補填される。)

階層的な取り扱いが不適当で, 各フィールドを独立に扱いたい場合は, 次の例のようにDfillを連続使用すればよい。

Dfill field-a input-file | Dfill field-b

集合的フィールド

複数フィールド指定のもう一つの場合として 集合的フィールドがある。 これは,-aを指定した場合適用される。 この場合,リストされたどのフィールドの値が変わっても 新しい値として扱われる。 たとえば,

ISBNISSNtagvalue
 0028-0836titleNature
  descriptionv. 1- Nov. 4, 1869-
  publisher[London, etc., Macmillan Journals Ltd., etc.]
0131101633 titleThe C programming language
  authorBrian W. Kernighan, Dennis M. Ritchie
  publisherEnglewood Cliffs, N.J. : Prentice-Hall, c1978

この表に対してDfill -a ISBN,ISSN を行うと,次のようになる。

Dfill -a ISBN,ISSNの結果
ISBNISSNtagvalue
 0028-0836titleNature
 0028-0836descriptionv. 1- Nov. 4, 1869-
 0028-0836publisher[London, etc., Macmillan Journals Ltd., etc.]
0131101633 titleThe C programming language
0131101633 authorBrian W. Kernighan, Dennis M. Ritchie
0131101633 publisherEnglewood Cliffs, N.J. : Prentice-Hall, c1978

出力フィールド順

出力レコードのフィールド順は, 補填されるレコードと,補填するレコードのフィールドの 最短共通順となる。 ただし,フィールド数が多い (一方のフィールド数が512を超える,あるいは双方の フィールド数の積が65536を超える)場合, 補填フィールドを先に,その他のフィールドを その後ろに出力する。

オプション

-a
aggregate; 集合的フィールド。 説明の集合的フィールド参照。
-b
blank is data; 空文字列は,空フィールドとして 扱わない。 説明の空フィールド参照。
-D [i/o]datautf=8|16|32
UTF入出力機能参照。

環境変数

Ddatautf, Didatautf, Dodatautf
UTF入出力機能参照。

メッセージ

マニュアル D_msg参照。

参照

DintroDfromHtmlDfromCsvD_msg

AUTHOR

MIYAZAWA Akira


miyazawa@nii.ac.jp
2013