コピー2018.08.31grep-changelogのソースを理解する前に、ChangeLogのフォーマットの理解を兼ねて、Logを小分けするスクリプトを作ってみます。タイトルの、Logを株分けってのは、私が作った言葉です。複数のChangeLogを一つずつ小分けして、Hashに突っ込むことを、どのようにタイトルにするか悩んだ末、ChangeLogを成長した作物に見立てて株分けとしました。一応英語もdivisionなので意味は合ってます。完成版を作るのは、難しいので、少しずつ作ります。ChangeLogという名称を含むファイル一覧を作るスクリプト。opendirで全ファイル一覧を取得して、grepでフィルタリングしてます。次は、抽出したファイルを一つずつオープンし、行頭に年-月-日の文字列がある行をIDとして、抽出します。"$id\n";}}close(INFILE);}これを実行すると、このように各ログが出力されます。次に、抽出したIDをHashのキーとして、各ログ本体をHashに格納します。このとき、元々のフォーマットである行頭にTABがある行をログ本体とみなし、TABを含めて文字列を一行の文字列に連結します。Hashからログを取り出すときは、TABを使用してsplitします。"$_";next;}last;}close(INFILE);}Hashから取り出して表示する処理です。"$id\n";foreach(@tmp){print"$_\n";}print"\n";}全文です。実行すると、このように抽出されます。株分けしたChangeLogを接ぎ木する今回は、前回のスクリプトを改造して、フィルタリングできるようにします。前回のスクリプトはこれです。変更1箇所目は、ファイルの先頭で、フィルタリングするパターンをパラメータから取得。戦時中のスパイ機関を題材にした短編ミステリー。毎回主役が変わり、たいていは一話完結なので、途中から見る人でも楽しめます。他のミステリー同様、最後に謎が解けますので、見終わって、あぁ、な...3-1.部分抽出ファイルを指定した行番号で区切るsplitコマンドは、指定したバイト数、もしくは行数でファイルを分割するコマンドです。それはそれで便利ではありますが、等間隔だけの分割では物足りないなあと思うときもあります。Proを使っていますが、初めて見る拡張子なので、どんなフォーマットなのか確認していきたいと思います。MediBangを起動して、A4サイズの白いキャンバスのまま保存します。ファ...3-1.部分抽出ChangeLogオプション解析(その7)まだ対応オプションは残っています。今回は、この2つのオプションを対応します。--excludeは、指定した文字列を除外するだけですので、以下の2行をそれぞれどこかへ追加するだけで実現できます。次は、--rever...3-1.部分抽出headの意外な使い方headはファイルの先頭部分を表示するコマンドですが、複数ファイルに使う場合、その質素な使用法には不釣り合いの豪華なパフォーマンスを提供してくれるコマンドです。email.ホーム3.テキスト整形3-1.部分抽出スポンサーリンク広告プロフィール管理人:takketeお仕事:システムエンジニア日々何か向上したくて、もがいています。Policyホーム検索トップサイドバースポンサーリンク広告プロフィール管理人:takketeお仕事:システムエンジニア日々何か向上したくて、もがいています。thanksタイトルとURLをコピーしました。