Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

awkのgsub/sub関数でマッチした文字の前後に細工をしたい場合

awkのgsub/sub関数でマッチした文字の前後に細工をしたい場合、
マッチした文字をキャプチャしてくれるのは"&"です。

実際のところ

たとえばgsubなら

$ echo 12345678 | awk 'gsub(/[0-9][0-9]/, "&-")'
12-34-56-78-

$ echo abc | awk ' gsub(/あ*/, " // &")'
 // a // b // c // 

subならこう

$ echo 12345678 | awk 'sub(/[0-9][0-9]/, "&-")'
12-345678

単に先頭なり末尾なりに文字を加えたいだけなら、
存在し得ない文字に"*"*1をくっつけてこんな手も。

$ echo abc | awk ' gsub(/^あ*/, " - ")'
 - abc

$ echo abc | awk ' gsub(/あ*$/, " // ")'
abc // 
$ echo abc | awk ' gsub(/あ*/, " // ")'
 // a // b // c // 

*1:ゼロ個以上適用

nlコマンドで行番号を出さず、擬似的にインデントをつける

shuzo-kino.hateblo.jp
では、nlコマンドで行数を出す方法を紹介しました。

更に、catで行数を出す方法なんてのも。
shuzo-kino.hateblo.jp

で、若干特殊な方法としてnlコマンドで「行を出さない」。
見方を変えればインデントをつけてるような感じですね。

実際のところ

"-bn"オプションです。

$ nl -bn tmp.txt 
      	France	12	"UTC−10:00 — most of French Polynesia
      	UTC−09:30 — Marquesas Islands
      	UTC−09:00 — Gambier Islands
      	UTC−08:00 — Clipperton Island
      	UTC−04:00 (AST) — Guadeloupe, Martinique, Saint Barthelemy, Saint Martin
      	UTC−03:00 (PMST) — French Guiana, Saint Pierre and Miquelon
      	UTC+01:00 (CET) — Metropolitan France
      	UTC+03:00 — Mayotte
      	UTC+04:00 — Réunion
      	UTC+05:00 — Kerguelen Islands
      	UTC+11:00 — New Caledonia
      	UTC+12:00 — Wallis and Futuna"

参考もと

  • man nl

catコマンドの行数表示オプション

考えてみりゃ当然なのですが……catにも行数を表示するオプションがあります。

実際のところ

そのままズバリ"-n"です。

$ cat -n tmp.txt 
     1	France	12	"UTC−10:00 — most of French Polynesia
     2	UTC−09:30 — Marquesas Islands
     3	UTC−09:00 — Gambier Islands
     4	UTC−08:00 — Clipperton Island
     5	UTC−04:00 (AST) — Guadeloupe, Martinique, Saint Barthelemy, Saint Martin
     6	UTC−03:00 (PMST) — French Guiana, Saint Pierre and Miquelon
     7	UTC+01:00 (CET) — Metropolitan France
     8	UTC+03:00 — Mayotte
     9	UTC+04:00 — Réunion
    10	UTC+05:00 — Kerguelen Islands
    11	UTC+11:00 — New Caledonia
    12	UTC+12:00 — Wallis and Futuna"

他のコマンドと合わせて使うこともできます。
というわけで……指定先でも行数表示オプションなんかつけてると、ちょっと笑える結果に。
パースし易いほうを残しておけばいいでしょう。

$ cat -n tmp.txt | grep -1 -n "New Caledonia"
10-    10	UTC+05:00 — Kerguelen Islands
11:    11	UTC+11:00 — New Caledonia
12-    12	UTC+12:00 — Wallis and Futuna"

参考もと

  • man cat

【読書メモ】小さな会社の稼ぐ技術

小さな会社の稼ぐ技術

小さな会社の稼ぐ技術

いわゆる「ランチェスター戦略」についての本です。
Amazonの文章紹介から抜粋すると……

◎竹田式「弱者の戦略」の4大ポイント
(その1) 差別化。人と同じはかなりやばい。
(その2) 小さな1位。人は1位は覚えるが、2位以下は覚えない
(その3) 一点集中。「強者」は何でもやる。「弱者」は1つに絞る。
(その4) 接近戦。常に相手の上をいく作戦を考える。

実際にランチェスター戦略を適用して上手く行った事例を紹介しながら、
中小企業が生き残る方法について詳しく書いてあります。

事例は物販や人材派遣業が主のため、ウチのようなIT系零細企業への適用は少し工夫が必要そうです。

【読書メモ】知識ゼロからの行動経済学入門

知識ゼロからの行動経済学入門

知識ゼロからの行動経済学入門

行動経済学とはナンノコッチャ? という話ですが……
要は人間の選択*1について研究する分野で、
経済の名をもっておきながら、何やら心理学めいた要素を持っています。
ゲーム理論なんかが有名ですね。

この本自体は漫画を含めた平易な解説をしてくれる入門書で
私のような門外漢でも素直に読み進める事ができました。

*1:ヤヤコシイことに、必ずしも経済行動を伴わない

PhantomJsでCORSを有効にする

shuzo-kino.hateblo.jp
などでも活躍()してくれたCORS(Cross-Origin Resource Sharing)の機能を使うオプションです。
CORSについてはこちら参照。
公式では

cross-domain XHR

とかなってますが、一応CORSの事のようです。

実際のところ

デフォではtrue、つまり外部へのアクセスは遮断されています。
必要な場合は無効化しておきましょう。

$ phantomjs --web-security=false phantomtest.js