〜2015年2月下旬〜
以前joinをgrepの代わりに使う話を書いたが、
複数マッチすることを利用すると組み合わせ的な使い方ができる。
% seq -f 'a %g' 3 a 1 a 2 a 3 % join <(seq -f 'a %g' 3) <(seq -f 'a %g' 3) a 1 1 a 1 2 a 1 3 a 2 1 a 2 2 a 2 3 a 3 1 a 3 2 a 3 3
aが共通なので各々可能性があるものが列挙されるようだ。
aが邪魔なら消すことも可能だ。
% join -o 1.2,2.2 <(seq -f 'a %g' 3) <(seq -f 'a %g' 3) 1 1 1 2 1 3 2 1 2 2 2 3 3 1 3 2 3 3
借りなければ月額料金がかからないので定額をやめて
スポットレンタルにしたわけだけど、
旧作しか借りないなら断然こっちのほうが安い。
特に毎月のようにやってる旧作80円レンタルを利用すれば、
7枚までなら送料同じなので800円ぐらいで借りられる。
定額だと2000円ぐらいで8枚までなので、
たまに気が向いたときに借りるのにぴったりだ。
数値を右詰めにしてしまうと、sortしてもjoinはsortと見做さないようで。
% seq -f "%2g" 10 -1 1 10 9 8 7 6 5 4 3 2 1 % seq -f "%2g" 10 -1 1 | sort | join --check-order - <(seq 10) 1 2 3 4 5 6 7 8 join: -:10: is not sorted: 10
9はどこへ?
ちょっとでかくなるとこんな表示になってしまう。
% echo 10000000000|mawk '{print $1+1}'
1e+10
原因はデフォルトの書式(OFMT)が"%.6g"だから。
これを"%.f"にすればまだまだいける。
% echo 10000000000|mawk '{print $1+1}' OFMT="%.f"
10000000001
"%d"だとオーバーフローしてしまうのでだめ。
% echo 10000000000|mawk '{print $1+1}' OFMT="%d"
536870912
cygwinにpalというカレンダーソフトが入ったんで、
なんだと思いubuntuにパッケージあったんだ試してみた。
% pal 
     Su   Mo   Tu   We   Th   Fr   Sa |     Su   Mo   Tu   We   Th   Fr   Sa
Feb  15  U16S C17C C18C  19   20   21 |Mar  22   23   24   25   26   27   28 
    U22S  23   24  @25@  26   27   28 |Apr C29C  30   31  U01S C02C C03C  04 
Mar  01   02   03   04   05   06   07 |    C05C  06   07   08   09   10   11 
    U08S  09   10   11   12   13   14 |     12   13   14  U15S  16   17   18 
     15   16  U17S  18   19   20   21 |     19   20   21  U22S  23   24   25 
なんだかよくわからないが、自分でイベントを設定できるらしい。
とりあえず/usr/share/pal/us.palのまねして日本の祝日を~/.pal/jp.palにちょっと書いてみた。
JP JAPAN 00000101 元日 *0122 成人の日 00000211 建国記念日
これで~/.pal/pal.confからus.palとか要らないもの消して、
file jp.pal (red)を追加してみるとこんな感じになった。
% faketime 1/2 pal
     Su   Mo   Tu   We   Th   Fr   Sa |     Su   Mo   Tu   We   Th   Fr   Sa
Dec  21   22   23   24   25   26   27 |Jan  25   26   27   28   29   30   31 
Jan  28   29   30   31  J01P @02@  03 |Feb  01   02   03   04   05   06   07 
     04   05   06   07   08   09   10 |     08   09   10  J11P  12   13   14 
     11  J12P  13   14   15   16   17 |     15   16   17   18   19   20   21 
     18   19   20   21   22   23   24 |     22   23   24   25   26   27   28 
*0122でちゃんと第2月曜日になってる。
JPじゃなくて祝日にしてみると残念ながら表示が乱れる。
% faketime 1/2 pal
     Su   Mo   Tu   We   Th   Fr   Sa |     Su   Mo   Tu   We   Th   Fr   Sa
Dec  21   22   23   24   25   26   27 |Jan  25   26   27   28   29   30   31 
Jan  28   29   30   31  祝01日 @02@  03 |Feb  01   02   03   04   05   06   07 
     04   05   06   07   08   09   10 |     08   09   10  祝11日  12   13   14 
     11  祝12日  13   14   15   16   17 |     15   16   17   18   19   20   21 
     18   19   20   21   22   23   24 |     22   23   24   25   26   27   28 
ファイル名に"-"を指定すると標準入力や標準出力という意味になるので、
% aws --quiet s3 cp s3://bucket/object.txt -
でcatと同じように使える。
またダウンロードしながらgzなファイルを伸長したい場合はこんな感じでいける。
% aws --quiet s3 cp s3://bucket/object.txt.gz - | zcat > object.txt
便乗してちょっと変形。
% for i in {180..1};do date -d@$i -u +$'\r%H:%M:%S'|tr -d '\n';sleep 1;done;echo $'\a'
最近のUbuntuだとデフォルトでビープ音は鳴らないので、
paplayで音を鳴らすといいかもしれない。
/usr/share/sounds/ubuntu/stereo/ 以下にいろいろある。
ビープ音鳴らしたいときは/etc/modprobe.d/blacklist.confの
blacklist pcspkrをコメントアウトして再起動。
確かにこれはにわかには信じがたいが、
convertでちょっとした処理をかけるとなんと同心円が4つ出てきた。
"There are only four circles here and they don't touch. C'mon brain you can do this."
% convert four-circles.jpg -solarize 60% four-circles-solarize60.jpg