Bye Bye Moore

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

2015-08-01から1ヶ月間の記事一覧

grepで何行目か知りたい場合、-nオプション

grepで何行目か知りたい場合、-nオプションです。 実際のところ wikipediaのtimezoneの記事から、Japanの含まれる行を行番号つきで見たい場合 $ cat timezones.html | grep -n Japan 744:<td><span class="flagicon"></span></td>

timeコマンドでシェルコマンドの実行時間を計る

timeコマンドはシェルコマンドの実行時間を計るコマンドです。 使い方はちょっと特殊です。 lsコマンドの実行時間を知りたい場合、以下のようにします。 $ time ls // lsの実行結果 real 0m0.009s user 0m0.002s sys 0m0.005sパイプでも同様。 $ time seq 1 …

sedで不要な行を削除する:その2 空白行

以前の記事で、次のような行数を指定した削除を扱いました。 $ seq 1 10 | sed -e "1 ,3d"dは [2addr]d Delete the pattern space and start the next cycle. との事なので、正規表現のあれこれと合わせて $ cat data | sed "/^$/d" hoge 42.3565 piyo 52.28…

grepの-vオプションは、一致した条件をけす

grepのvオプションは、 -v, --invert-match Selected lines are those not matching any of the specified pat- terns. と、「一致した行以外を表示する」とかいう難儀な挙動をとります。 実際のところ $ cat data hoge 42.3565 piyo 52.2876 fuga 38.9524 l…

【読書メモ】ミニコミマニア

シンプルに「ミニコミマニア」と、内容そのまんまのパワー溢れるタイトルが魅力的。実は私、学生時代には学内向けの広報誌を作っていました。 新入生や在学生に体育館が改築されたとか、学科が再編されたとか、学生総会の結果なんかをお知らせするやつです。…

AWKっぽい操作をRubyの構文でやるCLIツール「gr8」 その9:ファイル移動まわり

ディレクトリ作成まわりのメソッドは、以下に示す4つがあります。 このあたりだと、mvやcpとsedの合わせ技で代用できますね。 $ ls | gr8 'copy_as { sub(/\.htm$/, ".html") }' $ ls | gr8 'rename_as { sub(/\.htm$/, ".html") }' $ ls | gr8 'copy_to { …

AWKっぽい操作をRubyの構文でやるCLIツール「gr8」 その8:paths

pathsはRuby標準ライブラリのPathnameを扱うメソッドです。 読み出し時にPathnameも読み出してくれます。 $ ls | gr8 'select {end_with?("html")}.paths {|s| printf "%20s %s10", s, s.size}' timezones.html 21118310 top.html 4387010owned? やbasename…

AWKっぽい操作をRubyの構文でやるCLIツール「gr8」 その7:grep

gr8のgrepメソッドはlazyでgrepコマンドとawkを合わせた挙動を同時に実行できます。 $ ls | gr8 'grep(/(.+)(\.png)$/) {|s| printf "cp %16s %16s", "#{$1}.png", "img/#{$1.upcase}.jpg"}' cp ceo.png img/CEO.jpg cp system_sol.png img/SYSTEM_SOL.jpg$ …

AWKっぽい操作をRubyの構文でやるCLIツール「gr8」 その6:ライブラリの読み込み

gr8でも、Ruby製ライブラリを読み込むことができます。 ライブラリを読み込むには-rオプションです。 今回はgems.rbてな感じの名前でactive_supportと、自作メソッドを取り込んだファイルを作成します。 ## $ cat gems.rb require 'active_support' require …

AWKっぽい操作をRubyの構文でやるCLIツール「gr8」 その5:クォテーション

出力結果にクォテーションを出したい場合、qメソッドか、qqメソッドをつかいます。 実際の所 qメソッド:シングルクォテーション $ cat data | gr8 -F "map{self[0].q}" 'Haruhi' 'Mikuru' 'Yuki' qqメソッド:ダブルクォーテーション $ cat data | gr8 -F "…

AWKっぽい操作をRubyの構文でやるCLIツール「gr8」 その4:-Fで分割文字を

Fオプションをつかうと、分割文字を指定できます。 実際の所 $ cat data Haruhi!100 Mikuru!80 Yuki!120てな形にした場合、「-F"!"」てな感じで指定してあげます。 selfに配列形式で格納されています。通常のRuby配列の通り、0始まりです。 $ cat data | gr…

AWKっぽい操作をRubyの構文でやるCLIツール「gr8」 その3:sumメソッドとavgメソッド

avgはカラムの平均を出すメソッドです。 $ cat data | grep -v "^$" | gr8 -C 2 'map(&:to_i).avg' 100.0この記法は、以下のようにショートカットができます。 $ cat data | grep -v "^$" | gr8 -C 2 'avg_i' 100.0平均があれば、合算のsumのあります。 $ ca…

AWKっぽい操作をRubyの構文でやるCLIツール「gr8」 その2:mapメソッド

gr8でのmapは1行分をselfとみなし、順繰りにぶん回すメソッドです。 gr8は内部的にRubyを使っているので……ブロックを渡す事も、&:でlambdaを渡す事ができます。 $ cat data | grep -v "^$" | gr8 -C 1 'map(&:downcase)' haruhi mikuru yuki実装はオリジナル…

AWKっぽい操作をRubyの構文でやるCLIツール「gr8」

「gr8」はAWKっぽい操作をRubyの構文でやるCLIツールです。 mapやinjectといったおなじみの記法が使えるので、awk脳になりきれてない私のような軟弱者にピッタリです。 導入 Rubyを導入していれば $ gem install gr8だけでいけます。 Ruby抜きでも $ curl -o…

Array#fillで新規や既存の配列を一定ルールで埋める

Array#fillで新規や既存の配列を一定ルールで埋める事ができます。 実際のところ 既存の配列に手を加える事もできます。 ただし、破壊的なメソッドなので注意してください [1,2,3].fill(0) #=> [0, 0, 0] ary = (:a..:z).to_a ary.fill(nil, 0..10) #=> [nil…

【読書メモ】北朝鮮ポップスの世界

北朝鮮の音楽というと、あまり有名じゃないのですが 私のような一部の趣味者にとっては 普天堡電子楽団のようなトチ狂った作りでとても印象に残る曲を出す事でカルト的な人気があります。個人的に、北の音楽が魅力的である理由は 「どこのなく残る大日本帝国…

Array#values_atを使うと複雑な条件で抽出できる

実際のところ 0番目、2〜6番目を抽出するような場合を考えます。 ary = (:a..:z).to_a ((buf = []) << ary[0] << ary[2..6]).flatten #=> [:a, :c, :d, :e, :f, :g] ary = (:a..:z).to_a (:a..:z).to_a.values_at(0, 2..6) #=> [:a, :c, :d, :e, :f, :g]

postgresでsqlファイルをインポートから"\i DATABASE.sql "

postgresでSQLをインポートする魔界記法として"\i DATABASE.sql "てのがあります。 first=# \i ~/Downloads/dvdrental/restore.sql

psqlの-cオプションなら、ワンライナー程度の内容なら確認できる

psqlの-cオプションなら、ワンライナー程度の内容なら確認することができます。 $ psql mydb -c "select city from weather" city --------------- San Francisco (1 row)例の魔界めいたバックスラッシュ記法も。とりあえず確認するときには有効ですね $ psq…

postgresでテーブルのカラムを調べるには「 \d table」

sql

mysqlだと SHOW COLUMN でテーブルのカラムを確認できます。 が、PostgreSQLだと無効なコマンドです。 確認するには、「 \d table」と何やら魔界めいたコマンドで mydb=# \d weather Table "public.weather" Column | Type | Modifiers ---------+----------…

postgresでユーザ削除するときはdropuser

sql

postgresでユーザ削除するときはdropuserというコマンドを使います。 実際のところ 以下のような状況だったとします。 勝手がわからない頃にお試しで作ったユーザが2つ残ってます。 postgres=# \du List of roles Role name | Attributes | Member of -----…

オンラインタイマー「D.gg Timer」はプレゼンなどで有用

E.gg Timer - a simple countdown timer「D.gg Timer」はタイムカウントをしてくれる便利系WEBサイトです。 たとえば、 http://e.ggtimer.com/5minutesなんてやると、次のようにJavaScript製のタイマーが動きます。e.ggtimer.comデフォルトでは秒指定ですが…

SQLのwhere節で使うワイルドカードは"%"

sql

SQLのwhere節で使うワイルドカードは"%"です。 Postgresには、検証用に世界の国名が記載されたSQLファイルが用意されている - Bye Bye Moore で使ったファイルから、Jaを含む国名と国番号を検索するクエリは以下のとおりです。 # select name, country_id fr…

室外機を置けないような環境にいるなら、窓用エアコン採用という手がある。

コロナ ウインドエアコン(冷房専用タイプ) シェルホワイト CW-1615(WS)コロナ(Corona)Amazonクソ暑い今日この頃、いかがお過ごしでしょうか? 私の下宿先は二階で、しかも窓が小さいため換気効率が最悪です。 去年はサーキュレーターで何とかなりましたが、…

【おでかけレポート】日本で唯一の広告ミュージアム「アドミュージアム東京」に行ってきました。

広告とマーケティングの資料館「アド・ミュージアム東京」www.admt.jp 東京は新橋にある日本で唯一の広告ミュージアム「アドミュージアム東京」に行ってきました。 なんと、入場無料。 以下、増強中

jotコマンドではprintf記法が使える

jotコマンドでは"-w"オプションをつけてあげる事でprintf記法が使えます。 $ jot -r 5 10 20 | sed -e "s/\(.*\)/ \1 kByte/"上のようなコマンドが、次のように書き換わります。 $ jot -w "%d kByte" -r 5 10 20 11 kByte 15 kByte 18 kByte 13 kByte 14 kBy…

shufコマンドで行をランダムに散らす

shuffコマンドで行をランダムに散らすことができます。 OS Xの場合は、 OS Xのdateコマンドをぶん投げたくなったら、coreutilを入れて上書きしてしまうのも手 - Bye Bye Moore で取り上げたようにcoreutilを導入した上でgshufを叩けば使えます。 $ gshuf -i …

rsコマンドでカラムをまとめる

rsコマンドでカラムをまとめることができます。 実際のところ jotで100個の数をランダムに生成し、それを10×10の行列にする場合 $ jot -r 100 | rs 10 10 31 38 5 54 35 22 12 62 90 41 34 74 30 50 94 49 52 23 13 93 10 91 7 74 93 79 25 51 75 46 …

sedでグループ化にマッチしたモノは"\NUM"に入る

sedでグループ化にマッチしたモノは"\NUM"に入ります。 具体例 192.168.0.NUMという数値列を作る場合を想定します。 seqで1から9までの数値を生成し、sedで置換という手順で作ろうとすると以下のようになります。 $ seq 1 9 | sed -e "s/\([0-9]\)*/host 1…

XPathの条件指定は直下以下のタグ全体を見に行く

XPathで特定の条件に合致した親を持つ要素を抽出する - Bye Bye Mooreshuzo-kino.hateblo.jp で書いた base = doc.xpath("//table[1]//tr") name = base.xpath(".//td[../../../table/tr/td[.//img]][1]") というスクリプトにつちえ、 知人から以下のように…