shell
curl -X POST -d ... で投げるときに、ファイルの内容をエンコードする必要に見舞われた。 $ perl -MURI::Escape -E 'say uri_escape do { local $/; <STDIN> }' < file.txt [追記] -0777 オプションでまるごと読み込みができる。 $ perl -MURI::Escape -0777 -E 's</stdin>…
$ 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 とちがって、セパ…
find してからの xargs grep -n のほうが便利ではあるけど、ファイル名だけがほしい場合というのもある。 find の -exec 節は、コマンドの終了ステータスで真偽が決まる。 grep の終了ステータスはマッチすれば 0 を返すから、そのマッチしたファイルは -pri…
echo を 100 回実行できればよいので、yes と head で生成して、そのまま sh に丸投げする。 $ yes echo | head -100 | sh [追記] あれ、yes に空文字列をわたせばよいのでは $ yes "" | head -100
バッファに 1 + 1 と書いておいて、2 で置換できないかと思ったのでトライ。 置換処理はむしろ外部にまかせたい。vim における '<,'>! である。 C-u M-| CMD <RET> を使えばいけそうであるが、リージョン末尾が改行でない場合に、コマンドが受け付けてくれない場</ret>…
ログインシェル ($SHELL) をテンポラリバッファ内で起動して、$PATH を吐き出す 吐き出した $PATH をコロンで split して exec-path に append する
今どき m4 かと思わなくもないけど、コマンドラインツールがあればだいたい入ってるので重宝する。 埋め込みたい画像のパスを DATA_URI マクロで囲む。 相対パスだと m4 の実行時のカレントディレクトリを見るので (たぶん) そこだけ注意 <img src="DATA_URI(image/image.png)"> 画像ファイルの mi…
こっちは入力を5つ区切りにして、それぞれが 00001 の並びになっているかどうかをチェックする。 (仕様はこちらが正しいらしい?) $ cat /dev/urandom \ | LANG=C tr -dc "01" \ | fold -w1 \ | paste -d' ' - - - - - \ | (perl -nle 'print; if ($_ eq "0 …
ストリーム上の 0 と 1 の並びを sed に取り込んで、00001 かどうかを DFA っぽく検査する。 $ cat /dev/urandom \ | LANG=C tr -dc "01" \ | fold -w1 \ | (sed -nf dfa.sed; echo 2) \ | perl -ple 'BEGIN { @table = qw/ズン ドコ キ・ヨ・シ!/; } s/(.)…
こういうのもあり? シェル芸で部分集合を全通り求める方法(別解求む) – 上田ブログ 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,…
内容までチェックするような、凝ったファイル検査をしたいときに、-exec 節を使いたい。 そういうときは bash の引数として _ と {} を渡せばよいようだ。 _ は $0 に埋め込ませるだけである。 $ touch empty.txt $ seq 10 > num1.txt $ seq 4 > num2.txt $ …
$ seq 1 10 | paste -sd+ - | bc 55
プロジェクトの作業コピーの中にはもう使わないものも含まれている。 そういうファイルが何年も溜まってくると更新するだけでもディスク待ちが発生してしまう。 svn delete すればいいんだろうけど、プロジェクト的にはそういう感じでもないので、作業コピー…
$ /bin/echo -e '\x2d\x6e'