言語処理100本ノック2015 第2章: UNIXコマンドの基礎

はてブで50問解いた記事*1が話題になっていて、元の問題を眺めていた。第2章: UNIXコマンドの基礎ってのがあって、この章は自分でプログラムを書くのだけれど、答え合わせも兼ねてUNIXコマンドで実行しろと書いてある。ふと、はてUNIXコマンドですらすら回答できるかなとおもってUNIXコマンドでやってみた。

結果は、すらすら回答できるものもあったが、man, --helpを駆使して何とか解けるかといった感じのものもあった。

せっかくやったので、一応結果書いておく。

10. 行数のカウント

行数をカウントせよ.確認にはwcコマンドを用いよ.

$ wc -l data/hightemp.txt

11. タブをスペースに置換

タブ1文字につきスペース1文字に置換せよ.確認にはsedコマンド,trコマンド,もしくはexpandコマンドを用いよ.

$ expand -t 1 data/hightemp.txt
$ cat data/hightemp.txt | tr "\t" " "
$ sed -e "s/\t/ /g" data/hightemp.txt

12. 1列目をcol1.txtに,2列目をcol2.txtに保存

各行の1列目だけを抜き出したものをcol1.txtに,2列目だけを抜き出したものをcol2.txtとしてファイルに保存せよ.確認にはcutコマンドを用いよ.

$ cut -f 1 data/hightemp.txt > col1.txt
$ cut -f 2 data/hightemp.txt > col2.txt

13. col1.txtとcol2.txtをマージ

12で作ったcol1.txtとcol2.txtを結合し,元のファイルの1列目と2列目をタブ区切りで並べたテキストファイルを作成せよ.確認にはpasteコマンドを用いよ.

>|sh|
$ paste col1.txt col2.txt
|

14. 先頭からN行を出力

自然数Nをコマンドライン引数などの手段で受け取り,入力のうち先頭のN行だけを表示せよ.確認にはheadコマンドを用いよ.

$ head -n 10 data/hightemp.txt

15. 末尾のN行を出力

自然数Nをコマンドライン引数などの手段で受け取り,入力のうち末尾のN行だけを表示せよ.確認にはtailコマンドを用いよ.

$ tail -n 10 data/hightemp.txt

16. ファイルをN分割する

自然数Nをコマンドライン引数などの手段で受け取り,入力のファイルを行単位でN分割せよ.同様の処理をsplitコマンドで実現せよ.

$ split --number=l/3 data/hightemp.txt

このオプションは知らなかった。

17. 1列目の文字列の異なり

1列目の文字列の種類(異なる文字列の集合)を求めよ.確認にはsort, uniqコマンドを用いよ.

$ cut -f 1 data/hightemp.txt | sort | uniq
$ cut -f 1 data/hightemp.txt | sort -u

18. 各行を3コラム目の数値の降順にソート

各行を3コラム目の数値の逆順で整列せよ(注意: 各行の内容は変更せずに並び替えよ).確認にはsortコマンドを用いよ(この問題はコマンドで実行した時の結果と合わなくてもよい).

$ sort -k 3r,3 data/hightemp.txt

19. 各行の1コラム目の文字列の出現頻度を求め,出現頻度の高い順に並べる

各行の1列目の文字列の出現頻度を求め,その高い順に並べて表示せよ.確認にはcut, uniq, sortコマンドを用いよ.

$ cut -f 1 data/hightemp.txt | sort | uniq -c | sort -r

#小学生のときにやってた悪夢っぽいこと選手権

小学2年生ぐらいのころ異様にミニ四駆にハマっていて、友達に博士って呼ばれてた。調子に乗って、お気に入りのシューティングスターで大会出たら、予選落ちした。

友達が買ったミニ四駆なぜか作ってくれと頼まれ、6分で作って褒められた。たしかキャノンボールだったはず。小学◯年生みたいなやつで当って、発売前にダンシングドールを所持していた。

SP1239 1050ベアリング( 4個 )

SP1239 1050ベアリング( 4個 )

Fuel bandなくした

一年近く使っていたNikeのFuelbandを無くした。先日飛行機に乗る際に、手荷物検査で外してそのまま置き忘れたことをはっきりと覚えている。気がついた時は飛行機に搭乗する直前で、係員に相談したが、そのバンドを取りに行くのとこの飛行機に乗るのはどちらが重要だ?あなたがどちらを選ぶのか自由だと言われたので飛行機を選んだ。空港に問い合わせも考えたが調べると荷物は郵送不可で直接取りに行かないといけないらしくなくなく諦めた。

一年以上、ほぼ毎日つけていたものが腕から無くなってここ数日変な感じが続いている。結婚指輪が無くなったようなそんな感覚だ。歩数をカウントするのと、時間の確認に使っていただけ、しかも歩数のカウントはかなり精度悪くて正直無くても生活に支障はない。歩数のカウントはiPhoneのMovesってアプリも併用して使っていて、正直そちらのほうがまだ信頼できる感じ。ただ、僕はまだiPhone5を使っててM7が載っていないのでバッテリー消費がかなり激しい。

勝手にトラッキングされるの楽しかったので、また何か身につけてみたい。通知機能があって、あまり大きくないものが良いなと思ってる。

HDMIケーブル

勝間和代さんがホテルにHDMIケーブルを持ち込んでテレビに繋いで、ノートパソコンのサブディスプレイ化してるって話をみてなるほどと思ったので買ってみた。

最近のHDMIケーブルかなりスリムなタイプが出ている。これなら持ち運びするのも気にならない。

画質はホテルにあるテレビなので当然4Kではない。まぁ、資料を参照するぐらいなら使える感じだった。


面談

会社で人事面談をする機会があって凹んだ話。

面接内容は至って普通で、
  • これまでの実績の紹介。
  • その中で苦労したこと。
  • どうやって解決したか。

  • 今後の問題と課題。
  • 解決案は?
前半は実績なんでまぁ良かった。問題は後半で、なんともシドロモドロな回答をしてずばりその点を指摘された。

2年前から海外に渡って日本人が他にいない中がむしゃらに仕事をしてきて、与えられた仕事内では成果は出せたんだけど、目の前の仕事こなすのにいっぱいいっぱいで何も考えてなかったのかなと...

この面接はマネージャーになるためのステップなんだけど正直マネージャーになりたいかどうか自分の中でまだはっきりしていない。ただ、この2年役職はついてないものの実質マネージャーの仕事をしてきて自分がプレイヤーをやっていたときより大きな成果が出でいるのは事実。手を動かさない口だけ上司や、技術何もわかってない上司ってのは反面教師にしていているので、部分的に技術にも関わりながらマネジメントするのが落とし所なのかなとぼんやり考えている。

ま、そもそも面接は失敗したのでそんなチャンス来ないかもしれないけど:-P

チェックリスト

近ごろ、日本出張が増えて来てて出張準備を効率化するためにチェックリストを作っている。今日からまた出張でこのチェックリストに従って準備したのだが、あまりにも何も考えなくても準備できてしまって少し戸惑った。昔の自分からすると、この準備作業は大事で、何度も何度も確かめて問題ないことを確認していた。そんな作業がこんな簡単に済んで良いのか?と思ってしまったのだ。

今回に、限った話ではないけどチェックリスト作っただけだと、それが正しいかどうかわからない。自分が作ったものならまだしも、他人が作ったものだなおさら心配になる。だからチェックリストに従って一回やってみて問題ないことが確認できて初めて使えるものだと思ってる。

あと、チェックリストいちから作るの面倒だという問題もある。チェックリスト共有するウェブサービスってないものだろうか?他人のもので使えそうなものをフォークして、ちょっとカスタマイズして使う。フォークされた回数や実際に、使われた回数で信頼できるかどうかわかるみたいなやつ。ある程度GitHub gist でできそうだけど、専用であっても良さそうだ。