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}' |