2015-09-01から1ヶ月間の記事一覧
よく使う関数はawkスクリプトとして保存して適時読み出すと楽になるケースがあります。 awkスクリプトは-fオプションで読み込みます。 その後で、ワンライナーやら何やらが使えるので使いどころによっては重宝します。 実際のところ 参考もとのモノをベース…
導入 $ wget http://lawker.googlecode.com/svn/fridge/lib/awk/myrss.awk 使い方 $ gawk -f myrss.awk --source 'BEGIN { print "<ul>"; print myrss("rss;lawker.bl ogspot.com/feeds/posts/default?alt=rss;5","<li>\n"); print "</ul>" }' <ul> <a href="">Mar 01</a>Michael Sanders dem</ul>…
AWKで末尾からN個目のフィールドを得たい場合……rubyでいえば ary[-2] 何のことはなく、フィールド数を示すNF変数から、任意の数値を引くだけです。 実際のところ a~fまでの文字のうち、最後から2番目のレコードを得る場合は以下のようにします。 $ echo 'a …
AWKでも連続して変数を代入することができます。 同じ値を複数のフィールドに突っ込む場合に特に有効です。 実際のところ 1、2、最終のフィールドを"nil"としたい場合を考えます。 この場合、以下のように=で変数を結んであげるだけで連続して指定できます…
人様の書いたawkスクリプトをみてると、時折END部分で変数に+0をつけるものがあったりします。 たとえば、こんな感じ。 $ cat data.csv | awk '/Saitama/{tot++} END{print tot+0}' 2これは、awkの変数がjavascriptと同様かなり自由度が高いことと関係してい…
非POSIX環境の場合、改行ルールが違ったりパスの記法が異なったりで若干使い勝手が変わるケースがあります。 こういう場合、gawkやmawk、cygwinのawkに実装されているBINMODEオプションを使うと挙動をPOSIX準拠にすることができます。 If BINMODE is `"r"', …
NRとFNRのちがいは、 NRが通し番号なのに対して、FNRがファイル毎に振られる番号であるという点があります。 実際のところ 以下のようなファイルがあったとします。 $ tail 111.txt 000.txt ==> 111.txt <== abc withdrawal def payment xyz deposit xxx bal…
sedで特定範囲のみに正規表現を適用する場合、 範囲を指定した上でいつものように正規表現をあてます。 実際のところ 101,Hyōgo,Takarazuka,"225,587","219,862",2.6,39.3,"5,740",Special city 102,Kanagawa,Atsugi,"224,426","222,403",0.91,36.2,"6,200",…
AWKにも組み込み関数があります。 どれもやろうと思えば自力でできる内容ではあるのでしょうが…… index(string,search) length(string) 与えられた文字列の長さをみる split(string,array,separator) 所定の文字で分割します。 結果はarrayに格納されます…
カラムの大半が必要だけど、 アタマの通し番号が邪魔だな…… 末尾の注釈が要らないなぁ…… 等々、特定のカラム”だけ”不要という場合、あえてその部分だけ空白文字化してしまう手もあります。 実際のところ 前回扱った日本の都市情報のうち、最初と最後のカラム…
特殊変数のNFと$NFは、それぞれ明らかに異なった動きをします。 前者は項目数、後者は最後の項目の内容を格納しています。 実際のところ 以下のようなファイルがあったとします。 $ cat sample.txt foo vivit 42 bar 10 buzz 34 piyo 11これについて、NFと$N…
AWKでもwc的なことができます。 その上、そのままprintfにつなげたり、正規表現を使うことができたりで便利です。 実際のところ List of Japanese cities by population - Wikipedia, the free encyclopediaから作成した 日本の都市名リストを使い、検証して…
スターコントロールⅡは日本だと3DOで発売された戦略ゲーです。 私は中学生ごろにプレイして何とかクリアできました。 ゲーム内容としては資源を集めて宇宙艦隊を強化し、様々な異星人と同盟結んだり煽って戦わせたりできます。*1特に特徴的なのが異星人と…
$ seq 10 20 | sed -n '1p;$p' 10 20あたま数行を出したいだけなら、カンマ区切りで切れば良いです。 末尾数行ってのはやや苦しい感じです $ seq 10 20 | sed -n '1,3p' 10 11 12 参考もと sed -n '1p;$p' # Print the first and last line of stdin.— Comma…
ORS変数は出力レコードを特定の文字で結合できるものです。 実際のところ $ seq 20 30 | awk 'ORS=NR%5?", ":"\n"' 20, 21, 22, 23, 24 25, 26, 27, 28, 29一部の資料では"ORS=%NR%5"とかNRの前に入ってますが、誤植です。他のスクリプトで似た事やるのはち…
AWKの要素間の区切り文字はデフォでは空白文字です。 これを設定するのがOFS変数です。 実際のところ 各要素を"***¥n"で区切りたい場合を考えてみましょう。 前回のものをベースにする場合、OFSの部分を以下のように追加します。 BEGIN {OFS="***\n"; FS="</item>\n…
Yahoo!ニュース・トピックス - サイエンス から、RSSのファイルを取得してきます。 $ curl http://news.yahoo.co.jp/pickup/science/rss.xml > rss.xml $ cat rss.xml | nl 1 2 <rss xmlns:blogChannel="http://backend.userland.com/blogChannelModule" version="2.0"> 3 <channel> 4 <title>Yahoo!ニュース・トピックス - サイ…</channel></rss>
最近、流通の歴史に興味が出てきたので、色々調べてます。 今でこそ電子商取引といった実物抜きの取引が実現してますが、 経済の基本はモノのやりとりです。今回紹介する「東アジア内海世界の交流史」も、 そういった日本や中国、東南アジアにおけるモノのや…
BEGINとENDを使えば、特定条件に一致した行をカウントするのも比較的楽にできます。 BEGIN { count = 0 } $1 % 3 == 0 && $1 % 5 == 0 { count = count+1 } END { print "I found " count " fizzbuzz numbers. :)" }てなファイルを用意した上で $ seq 1 100 …
AWKでは、ANDやORを使った条件指定ができます。 これと行番号を意味するNRを組み合わせることで行範囲を指定することができます。 実際のところ たとえば……4行目から7行目までを表示したいなんてケースがあった場合、 $ seq 1 100 | awk '( NR < 3 ) && (N…
おっタマゲました。 Goole DriveにはOCRの機能があります。 PDFや画像から文字を引き出す事が可能です じっさいのところ 以下のような感じで、「Hello, OCR!」というワードアートが出てる画像があったとします。 これを、右クリックして「アプリで開く」=>「…
hyperscriptでもJavascriptのmap関数をつかう事で、 連想配列の中身を連続してレンダリングする事ができます。 子要素のliタグなんかを生成する時には特に有効ですね。ここで気をつけなければならない事として 同一のセレクターである場合、 識別用のIDを振…
maquetteでアニメーションをさせたい場合、 「JSサイドの実装」と「CSSサイドの実装」のにパターンがあります。 実際のところ JS実装 公式から例を引用するとVelocity.jsのような外部ライブラリの力を借りつつ、 全部JSでやる方法があるようです var itemNrs…
「html2hscript」は、その名の通りhtmlをhyperscriptにコンバートしてくれるライブラリです。 導入 node.js関連なのでnpmで一発 $ npm install html2hscript つかいかた var parser = require('html2hscript'); parser('<h1>Hello World</h1>', function(err, hscript…
情報の時代21世紀に入って15年以上がたちました。 アメリカで出ている新聞の朝刊一日分が、中世の農民が一生に触れる情報に匹敵するなんて話も出るほど、この世には情報が溢れかえっています。 さらに図書館やインターネットの普及により、それら情報へ…
使用者と労働者……という表現はよく聞きますね。 前者はお金出して働く場を作る側。 後者は、その場で働くかわりにお金をもらう。ここで気になるのが、後者と同じ立場と思われる「従業員」という立場。 ……「労働者」と「従業員」て何が違うんでしょう? 自社…
masquetteでアニメーションする場合の処理は 1. The projector waits until its scheduleRender() function gets called one or more times. 2. The projector waits until the browser signals it is ready to paint the next frame (using requestAnimatio…
hyperscriptには、スタイル属性を付加することができます。 公式によれば、 h('h1.fun', {style: {'font-family': 'Comic Sans MS'}}, 'Happy Birthday!') h('h1.fun', {style: 'font-family: Comic Sans MS'}, 'Happy Birthday!') という二パターンの記述法…
masquetteは学習コストが低いそうです。 でもね、その前にhyperscriptの学習コストが必要でした。hyperscriptはJSのスクリプトからHTMLを吐き出す怖さのある技術で、 mercuryというVirtualDOM系フロントエンドフレームワークで採用されているものです。公式…
MaquetteはVirtualDOM向けフレームワークです。比較対象として挙げられているのは……個人的に魔界技術と認定するReact。 これだけで、話聞いた時には逃げ出しそうになりました。 だって、これ怖いエンジニャーが積極的に記事にしてるアレじゃないですか…… で…