やっぱりawk 〜Title編〜
レピシを見ると、牛乳!ほう! マヨ!ほう!となってたけど、結局、塩コショウに落ち着きました(笑)
ある日の出来事
Upggerした後、Previewで、全体確認をやっています。Upload後は、公開制御ぐらいになってるわけなんですが、ある時、Titleが変なことに気づきました。
例えば、今日のタイトルをベースにお話すると、Previewでは、「やっぱりawk」となっていたのです。はて?
デフォルトはスペース
Markdownでの記述は、
% Title: やっぱりawk 〜Title編〜
なっていて、正しくは、「やっぱりawk 〜Title編〜」となるはずなのです。Title部分の処理には、awkを使っていて、何も指定をしないと、デリミタはスペースなわけです。つまり、
- 第一フィールド: %
- 第二フィールド: Title:
- 第三フィールド: やっぱりawk
- 第四フィールド: 〜Title編〜
となっていて、本処理部分のCodeは、
TITILE=`awk '/Title:/{print $3}' ${DIR}/head.txt`
これじゃ、出力されません。そりゃそうだ。第三フィールドのみとなっているのですから。
考えてみれば、スペース無しでタイトルをつけていましたし、Label側で問題が発生しないのは、LabelはAPI上、「カンマ」がデリミタですので、第三フィールドを指定すること自体に矛盾が発生しなかったというのが一つの原因でした。まあ、独自ルールなので、注意が必要ってことになります。
いったんawkったら、最後までawk
その昔は、awkでも長い記述をしたものですが、複雑処理は、Pythonなどにお願いにすることなるので、awkでの処理は、「限りなくワンライナー」にしておこう、否、おきたい、というのが、どうでもよいポリシーです。(笑)
すると、ここでのawkは、「第三から最終フィールドまでを取得する」ということなります。
TITLE=`awk '/Title:/{print substr($0,10);}' ${DIR}/head.txt`
独自ルール(またか!)上、「Title:」の後ろは、「半角スペース」の後、「タイトル」を記述するということにしていますので、 上記は、「10文字目以降」を変数TITLEにいれる、という処理を行っています。
しかし、「後ろのスペース」は絶対的なものと定義をしても、「前のスペース」は、あやふやにしているのと、「10文字目」という決め打ちもなんなので、以下のように、修正。
TITLE=`awk '/Title:/{S=index($0,"e:")+3;print substr($0,S);}' ${DIR}/head.txt`
暫定的ではあるけど、問題なく(笑)
コメント
コメントを投稿