Perl書くくせにpack/unpackの動作が全然わからなかったため休日に少し練習。 以下、チラシの裏程度のメモ書き。校正しておらず、自分が思いついた思考の順序で一発書きしたもの。 たぶん間違えた内容を含んでます。
packは、引数に配列、あるいは文字列を受け取って、それを規則に従ってバイナリに変換する。
入力: 配列 or 文字列 出力: バイナリ
| $ seq 1 100 | awk 'BEGIN{a="*"}{print a;a=a"*";system("sleep 1")}' | stdbuf -oL sed 's/...../#####/g' | xargs -I@ echo -ne @"\r" | |
| $ seq 1 10 360 |awk '{print int(sin($0*3.14/180)*10)+10}'|perl -nle 'printf "_ " x $_."*"; print " _" x (20 - $_)'|rs -T|tr _ ' ' |
| base64sh() { | |
| local input=${1:-$(cat)} | |
| paste <(seq 0 63 | sed 's/^/obase=2;ibase=10;/' | bc | sed 's/^/00000/' | grep -oE '.{6}$') \ | |
| <(echo {A..Z} {a..z} {0..9} + / | xargs -n 1) | \ | |
| awk '{print "s|"$1"|"$2"|"}' | \ | |
| sed -f - <(echo -n $input| perl -ne 'print unpack("B*", $_)."0000"' | \ | |
| fold -w 6 | grep -oE '.{6}$') | tr -d '\n' | fold -w 4 | sed 's/$/===/' | grep -oE '^.{4}' | tr -d '\n' | awk 1 | |
| } | |
| # Usage: base64sh |
| # coding: utf-8 | |
| # 参考: http://judge.u-aizu.ac.jp/onlinejudge/commentary.jsp?id=NTL_1_B | |
| def ppow(x, n) | |
| return 1 if n == 0 | |
| return ppow(x**2, n / 2) if (n % 2) == 0 | |
| return ppow(x**2, n / 2) * x if (n % 2) == 1 | |
| end | |
| p ppow(3,21) |
| # ruby | |
| $ time bash -c 'ruby -e "print 12345**54321"' >/dev/null | |
| bash -c 'ruby -e "print 12345**54321"' > /dev/null 0.57s user 0.37s system 91% cpu 1.027 total | |
| # bc | |
| $ time bash -c 'echo "12345^54321" | bc' >/dev/null | |
| bash -c 'echo "12345^54321" | bc' > /dev/null 3.15s user 0.06s system 81% cpu 3.942 total | |
| # python | |
| $ time bash -c 'echo "print pow(12345,54321)" | python' >/dev/null |
| #!/bin/bash | |
| # Usage | |
| # $ pow.sh x n | |
| # result = x^n | |
| calc () { | |
| echo "$1" | bc | tr -dc '[-0-9]' | |
| } | |
| P=$1 |
| #!/bin/bash -xv | |
| # Dependencies | |
| # * fswatch | |
| # $ brew install fswatch | |
| THIS_DIR=$(cd $(dirname $0) && pwd) | |
| SEMAPHORE="/tmp/automake.$$" | |
| while ps $$ > /dev/null ; do |
| $ cat /dev/urandom| LANG=C tr -dc '0-9' | fold -w 70 | grep -v '^0' | xargs -n 1 openssl prime -hex | awk '!/not/{print $1;}' |
| #!/bin/bash | |
| # Dependencies | |
| # curl, perl, paste, sort, uniq, awk | |
| curl -so- $1 | \ | |
| perl -nle 'print $_ for (m/(?<=<a href=")(http:\/\/qiita.com\/[^"]+\/items\/[^"]+)">(.*?)(?=<\/a>)/g)' | \ | |
| paste - - | sort | uniq | \ | |
| while read url title; do echo $(curl -so- $url | grep -oP '(?<=<span class="js-likecount">)\d+(?=</span>)')"\t$title\t$url" ;done | \ | |
| awk -F'\t' '{s+=$1;print $0}END{print "SUM: "s}' |