2015年1月25日日曜日

find と awk のお勉強

middleman にグローバルナビ も全部自動出力させたいなあと思うと、
現在書かれているhtmlのfrontmatter 全部が必要になるなあと。

middleman は単一のHTMLに対する要求で駆動するので、全部のfrontmatter を あとから集めるのは無理かなあと。となるとあらかじめ集めるのがいいのか。

とりあえず作ってるページのfrontmatter を 結合して置いておくスクリプトを考え中。

frontmatter は
---<改行> …YAML形式
もしくは
;;;<改行>  …JSON形式
で始まり

---<改行> …YAML形式
もしくは
;;;<改行>  …JSON形式

で終わる
その パターンで囲まれた部分を印刷すればいい。

結合部分は リダイレクトで追記するなりやり方はいくらでもあるので、 ひとつのファイルからfrontmatter を取り出すフィルタを作る方法を考える。 awkでできそうだと思うけど、
いろいろまだわかんない事が。

というか awk 自体初体験だったり。

  シェルコマンドを使った処理の効率化は AWKの行(レコード)操作がカギをにぎる(1/2):CodeZine

をみて

cat index.html.haml |awk '/\;\;\;/, /\;\;\;/'

をやってみると

;;;
;;;

だけ出力される。あれ切ないヤツだ。間は何処に行った。。(;-; (--;

seq 1 1000 | awk '($0 % 5) == 0, /5$/' |head
5
10
11
12
13
14
15
20
21
22

なるほど これはとんだ思い違いをしていたカンマ前もカンマあとも両方評価されるんだなあ。

perl で $/ かなにかアンデフして 正規表現すれば一発ではなかったかともおもうのですが awk でもう少し考えたいのです。 perl の記憶もあやふやdeathし。

find なんかもちょっと面白いコマンドですよね。

man 読み中。 Awkつながりで I love music!

0 件のコメント:

コメントを投稿