*grepと置換でKWICを作る [#n1d03b74]

-KWIC --- ''K''ey''W''ord ''I''n ''C''ontext
-下に出てくる''\''は半角の¥((使っているパソコンによっては、この文字「\」が半角の「\」になっているかもしれませんが、これは半角の¥で入力してください(半角¥と半角\は同じコードx5Cで、和文フォントでは半角¥、欧文フォントでは半角\になります。)))

**K2Editor編 [#s73d6818]
-特定の正規表現((区切り文字「,」にマッチするものやグループ化「()」を含むもの))を使った検索結果や、原文中にカンマが現れる場合には対応できません。

1.調べたい文字列をgrepする。(簡単な正規表現も利用可)
 ================================================================================
     GREP検索結果
     Grep("新聞紙","*.*",1,1,0,1,0,0)
 ================================================================================
 G:\青空文庫\与謝野晶子\三面一体の生活へ.txt(98):私たちに取っては、こういう事実が新聞紙上に現れるごとに、言い知らぬ不快と公憤とを感じます。
 G:\青空文庫\与謝野晶子\姑と嫁について.txt(10): 新聞紙の伝うる所に由れば、姑という人は明治以前の思想をそのままに、,(由=よ)
 G:\青空文庫\与謝野晶子\姑と嫁について.txt(11):苦痛を忍んでいることを知っているので、姑に対する新聞紙の報道を誇張だとは思わない。

2.ファイル先頭のいらない部分(=====で囲まれたところ)を削除する。(あとで削除してもよい)
 G:\青空文庫\与謝野晶子\三面一体の生活へ.txt(98):私たちに取っては、こういう事実が新聞紙上に現れるごとに、言い知らぬ不快と公憤とを感じます。
 G:\青空文庫\与謝野晶子\姑と嫁について.txt(10): 新聞紙の伝うる所に由れば、姑という人は明治以前の思想をそのままに、,(由=よ)
 G:\青空文庫\与謝野晶子\姑と嫁について.txt(11):苦痛を忍んでいることを知っているので、姑に対する新聞紙の報道を誇張だとは思わない。

3.行頭のいらない部分(G:\…\)を置換で削除する。((1.のgrepの時に「相対パス」をonにしていればこの作業は不要))
 与謝野晶子\三面一体の生活へ.txt(98):私たちに取っては、こういう事実が新聞紙上に現れるごとに、言い知らぬ不快と公憤とを感じます。
 与謝野晶子\姑と嫁について.txt(10): 新聞紙の伝うる所に由れば、姑という人は明治以前の思想をそのままに、,(由=よ)
 与謝野晶子\姑と嫁について.txt(11):苦痛を忍んでいることを知っているので、姑に対する新聞紙の報道を誇張だとは思わない。

4.区切り(「,」)を入れる。~
以下の置換では「ファイル先頭から」on、「正規表現」offにしておくこと。
-「\」を「,」に置換
-「txt(」を「txt,」に置換(拡張子が邪魔なら「.txt(」を「,」に置換)
-「):」を「,」に置換

次の置換では「ファイル先頭から」on、「正規表現」on。
-1.で調べた文字列をタグ付き正規表現で置換 例:「(新聞紙)」を「,$1,」

 与謝野晶子,三面一体の生活へ.txt,98,私たちに取っては、こういう事実が,新聞紙,上に現れるごとに、言い知らぬ不快と公憤とを感じます。
 与謝野晶子,姑と嫁について.txt,10, ,新聞紙,の伝うる所に由れば、姑という人は明治以前の思想をそのままに、,(由=よ)
 与謝野晶子,姑と嫁について.txt,11,苦痛を忍んでいることを知っているので、姑に対する,新聞紙,の報道を誇張だとは思わない。

5.「名前を付けて保存」で拡張子をcsvとして保存する。

6.表計算ソフト(Excel)で開く。
|||RIGHT:|RIGHT:|CENTER:|||c
|与謝野晶子|三面一体の生活へ.txt|98|私たちに取っては、こういう事実が|新聞紙|上に現れるごとに、言い知らぬ不快と公憤とを感じます。| |
|与謝野晶子|姑と嫁について.txt|10| |新聞紙|の伝うる所に由れば、姑という人は明治以前の思想をそのままに、|(由=よ)|
|与謝野晶子|姑と嫁について.txt|11|苦痛を忍んでいることを知っているので、姑に対する|新聞紙|の報道を誇張だとは思わない。| |

#BR

***1行に複数出てきた場合の対処 [#de00e0b3]
タグ付き正規表現を使った置換で複数行にする。
+正規表現onでファイル先頭から次の置換を行う。
--検索語:''(^[^,]*,[^,]*,[^,]*,)(.*)(,新聞紙,)([^,]*)(,新聞紙,.*)$''
// (^[^,]+,[^,]+,[^,]+,)(.+)(,新聞紙,)([^,]+)(,新聞紙,.+)$
// ここ↑は文脈の前のフィールドの数だけ [^,]+, を繰り返す。
// これは「著者(フォルダ名)」「作品(ファイル名)」「行番号」の3つの場合。
// 2つしかなければ、 (^[^,]+,[^,]+,)(.+)(,新聞紙,)([^,]+)(,新聞紙,.+)$
--置換する語:''$1$2$3$4\n$1$4$5''
+1.をヒットしなくなくなるまで繰り返す。(1行に3個以上出てきたときのため)

-1行に複数出てきた場合の例
--置換前
 オイゲン・チリコフ/森林太郎訳,板ばさみ.txt,237,総ての進歩的思想の人が、,新聞紙,の良友であるが如く、検閲官も亦,新聞紙,の良友である筈であります。
 大杉栄,獄中記.txt,337,と言っても実は二度で、最初の,新聞紙,条令違犯で食っているうちに、二度目の,新聞紙,条令違犯がきまって、前のが満期になるとすぐ引続いてあとのを勤めた。
--置換後
 オイゲン・チリコフ/森林太郎訳,板ばさみ.txt,237,総ての進歩的思想の人が、,新聞紙,の良友であるが如く、検閲官も亦
 オイゲン・チリコフ/森林太郎訳,板ばさみ.txt,237,の良友であるが如く、検閲官も亦,新聞紙,の良友である筈であります。
 大杉栄,獄中記.txt,337,と言っても実は二度で、最初の,新聞紙,条令違犯で食っているうちに、二度目の
 大杉栄,獄中記.txt,337,条令違犯で食っているうちに、二度目の,新聞紙,条令違犯がきまって、前のが満期になるとすぐ引続いてあとのを勤めた。

----
#counter

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS