テキストファイルでタグを管理する

テキストファイルの束には、タグ管理システムがありません。ぶっちゃけ秀丸のgrepでかなり用が足りてしまうのですが、TaskPaperファイルを秀丸でも編集するようになると「@タグ」形式のタグで検索したりしたくなってきます。そこで秀丸で@タグを扱うときの覚え書きを書いておこうと思います。

タグの検索

探したいタグがわかっていれば、 次の文字を検索すればOKです。

@tag

メールアドレスなど@付きの文字がたくさんひっかかってしまうときには、@tagを地の文から区切っている文字を加えます。ここから先は正規表現を使います。「(半角)スペース、タブ、改行のいずれか」を表す\sというラベルを使うと \s@tag\s です。これだけでは行頭にある@tagがマッチしないので、次のように(行頭あるいは\s)という表現に置き換えます。

(^|\s)@tag\s

すべてのタグを一覧するときは、「tag」の部分を「\s以外のすべて」に置き換えて、次のように書けばOK。

(^|\s)@\S+

ただし、このとき厳密には「@tag」でなく@の前のスペースを含む「 @tag」にヒットしています。別に問題はないのですが、「@tag1 tag2」のようにタグが続けて書かれたときには、強調表示が「abc @tag1 tag2 def」となってしまいます。これを正しく「abc @tag1 tag2 def」と表示させるなら

(?<=^|\s)@\S+

とします。(?<=abc)xyzと書くことで、abcxyzにマッチさせつつ、xyzのみをヒットした結果として扱うことができます。

タグの一覧

タグを含む行を一覧するにはgrepを使います。複数ファイルもOK。

自分が使ってきたタグだけを集めることも、少々手間がかかりますが、できます。

まずは、対象ファイル群に対して (^|\s)@\S+ でgrepをかけます。するとタグを含む行が別画面に出力されるので、その画面上で次の置換を行います。

(^|\s)(@\S+)\n\2\n

\2は2つめの()、つまりヒットしたタグそのものです。この前後に\nを入れると言うことは、タグの前後に改行を入れてタグだけからなる行を作るということです。秀丸(v8以降?)には標準でソートの機能があるので、結果を並べ替えればタグ一覧が手に入ります。

最後は重複行の削除です。秀丸には重複行を除く、UNIXでいうuniqの機能は標準ではありません。しかし変換ライブラリをインストールすることで重複行を取りのぞくことができます。


友達に伝える
作成: 2013/9/28 by:koji


「ログイン」ブロックはキャッシュをOFFに

Tech

TaskPaperファイルを秀丸で

新規ユーザー登録(無料)

  • メールニュース[週刊起-動線]の購読
  • コメントなどの投稿
  • ココロミの利用
  • 一部コンテンツの購読

ログイン

コメント

タグ(キーワード)