• twitter
  • facebook
文学・歴史資料のデジタル加工入門

大量置換のためのツール sed を用いて その1【文学・歴史資料のデジタル加工入門10】 (木越 治)

●複雑な検索(前回の補足)

まず、前回掲載した csv 形式の「上田秋成研究文献目録」の一部を再度掲載する。

=========================================

すずきじゅん,鈴木淳,ゆきかひふり考,富士フェニックス論叢,中村博保教授追悼特別号,平成10年11月,12,1998.11,,
すずきよねこ,鈴木よね子,『藤簍冊子』の和歌表現,富士フェニックス論叢,中村博保教授追悼特別号,平成10年11月,12,1998.11,,
おざわえりこ,小澤笑理子,「目ひとつの神」の改稿過程について―文化五年本の読みと人物造型の変化を中心に―,近世文芸研究と評論,56,平成11年6月,22,1999.06,,
やましたひさお,山下久夫,秋成『金砂』の古代像―”水運の難波”への郷愁と喪失感―,日本文学,48の6,平成11年6月,9,1999.06,,
ながしまひろあき,長島弘明,雨月物語,『日本古典のすすめ』(岩波書店編集部編、岩波ジュニア新書),,平成11年6月,13,1999.06,,
おおわやすひろ,大輪靖宏,怪異からみた『雨月物語』の作品順序,上智大学国文科紀要,16,平成11年3月,16,1999.03,,
いいくらよういち,飯倉洋一,老曽の森の物語―「目ひとつの神」私見―,語文研究,86・87,平成11年6月,13,1999.06,,
いいくらよういち,飯倉洋一,近世小説に伏在する中古物語―秋成を例に,国文学(特集・近世文学、以前・以後),,平成11年2月,7,1999.02,,
いしいかずお,石井和夫,秋成の修辞とスタイル―対の構造,文学批評・叙説,19,平成11年8月,9,1999.08,,

=========================================

このデータは次のようなフィールドで構成されていた。

=========================================

$1:著者のよみ
$2:著者
$3:論文名・著書名
$4:掲載誌・掲載書名(出版社)
$5:巻号
$6:頁数
$7:発表年月(元号表記)
$8:発表年月(西暦表記)
$9:備考(単行本収録データなど)

=========================================

前回は、ひとつデータのどこかに「菊花の約」が含まれているものを検索し、その表示方法をみやすく変更することについて記した。が、こういう単純な検索では、論文執筆の際のデータとしては必要のないものも混じってしまう。いちばんよく使うと思われるのは、目録データの第3フィールド、すなわち論文の題名欄に「菊花の約」があらわれるものであろう。こういうデータだけを見つけるように検索したいときは、正規表現による検索パターンを指定する必要がある。

なお、このあたりから、本格的な正規表現の話になるので、しっかり理解していただきたい。

第3フィールドにだけに出る「菊花の約」という文字列を指定するには、

^[^,]*,[^,]*,[^,]*菊花の約

という正規表現を使った検索パターンを指定すればよい。この表現の意味するところは次のとおりである。

  1. 最初の「^」はデータの最初であることを示すもの。行頭から始まるパターンを指定します、という宣言である。
  2. [^,]*,  これがcsvファイルの1つのフィールドを意味している。[ ]内で「^」を使うと「次にくる文字以外」という意味になる。だから、[^,]は、「コンマ以外のすべての文字」という意味になる。csvファイルというのは、フィールドの区切りに以外に「,」を使うことは絶対にないので、そのことを利用している。その次の「*」は「直前の文字の0回以上の繰り返し」を意味している。だから、この正規表現は、このフィールドは、コンマ以外の文字ならどんな文字がはいっていてもいいし、あるいは空白でもかまいませんよ、と宣言しているわけである。
  3. [^,]*,[^,]*,  これで、データの第1フィールドと第2フィールドを指定したことになる。
  4. [^,]*菊花の約 これで、ひとつデータフィールドのどこかに「菊花の約」という文字列があるもの、という表現になる。なお、ここに、[^,]*をつけておかないと、データフィールドの最初の文字列が「菊花の約」ではじまるものだけを見つけることになる。

いずれにしても、「[^,]*,」でもって、csv データの1つのフィールドを表現できるというのは、私にとっては目からウロコ的発見であった。これを知る以前は、第1フィールドは著者の読みを入れてあるフィールドだからすべて平仮名ばかりだから[ぁ-ん]*の1回以上の繰り返しだな、というように指定し、第2フィールドは、仮名も漢字もアルファベットもあるので、さてどうやればいいか、と大変な思いをしながら研究したものである。「……でないものすべて」という否定表現を用いた正規表現の指定方法というのは、かなり理系的発想のように思われるが、こういうのに習熟しておくと、正規表現を使うのがとても楽になる。
*正規表現では文字コード表において、最初の文字と最後の文字を「-」でつなぐと、その範囲内にある文字全部を指定できる。だから、こう指定すると平仮名全部をあらわすことができる。