ardggy's blog

Esc - Meta - Alt - Ctrl - Shift

シェル芸

FizzBuzz (BSD版 sed)

$ seq 1 100 \ | sed -e ':L' -e 'n;n;n;n;s/[0-9]*/Buzz/;n;bL' | sed -e ':L' -e 'n;n;s/[0-9]*/Fizz/;n;bL' GNU 版みたいに 5~5s/[0-9]*/Buzz/; 3~3s/[0-9]*/Fizz/ とは書けないので、n コマンドを重ねる。 1行目は暗黙に読み込むので、置換後にもう1回読…

行を連結する

(1) paste をつかう。 -d オプションでセパレータ文字を指示できる。NUL 文字を指定すればセパレータはなしになる。 $ seq 1 10 | paste -sd, - 1,2,3,4,5,6,7,8,9,10 $ seq 1 10 | paste -sd$'\0' - 12345678910 (2) sed をつかう。 paste とちがって、セパ…

100行の空行を生成する

echo を 100 回実行できればよいので、yes と head で生成して、そのまま sh に丸投げする。 $ yes echo | head -100 | sh [追記] あれ、yes に空文字列をわたせばよいのでは $ yes "" | head -100

ズンドコしたい (2)

こっちは入力を5つ区切りにして、それぞれが 00001 の並びになっているかどうかをチェックする。 (仕様はこちらが正しいらしい?) $ cat /dev/urandom \ | LANG=C tr -dc "01" \ | fold -w1 \ | paste -d' ' - - - - - \ | (perl -nle 'print; if ($_ eq "0 …

部分集合を作るあれ

こういうのもあり? シェル芸で部分集合を全通り求める方法(別解求む) – 上田ブログ bash-3.2$ echo {{a\,,}{b\,,}{c\,,}{d\,,}} | xargs -n1 | sed -e 's/,\}/}/g' {a,b,c,d} {a,b,c} {a,b,d} {a,b} {a,c,d} {a,c} {a,d} {a} {b,c,d} {b,c} {b,d} {b} {c,…

足し算

$ seq 1 10 | paste -sd+ - | bc 55

SVN 作業コピーのダイエットをした

プロジェクトの作業コピーの中にはもう使わないものも含まれている。 そういうファイルが何年も溜まってくると更新するだけでもディスク待ちが発生してしまう。 svn delete すればいいんだろうけど、プロジェクト的にはそういう感じでもないので、作業コピー…