ふと、コンソール上で2進数とかExcelの列の10進数対応一覧みたいなのを一発で出力できないかなと思ったので、やってみることにした。 2進数については、bcコマンドを使うかどうかで結構変わってくる。 bcコマンドを使わない場合だと、ブレース展開を使用するので明示的に数字を指定するのが難しいようだ。
seq -f "obase=2;%g" 0 255|bc|awk '{print (NR-1),$1}'
eval echo $(echo '{,{0..1}}'{,,,,} '{0..1}'|tr -d ' ')|tr ' ' '\n'|awk '$1!~/^0{2,}$/&&!a[$1]++'|awk '{print (NR-1),$1}'
test@ubuntu:~$ seq -f "obase=2;%g" 0 255|bc|awk '{print (NR-1),$1}'|head -20
0 0
1 1
2 10
3 11
4 100
5 101
6 110
7 111
8 1000
9 1001
10 1010
11 1011
12 1100
13 1101
14 1110
15 1111
16 10000
17 10001
18 10010
19 10011
test@ubuntu:~$ eval echo $(echo '{,{0..1}}'{,,,,} '{0..1}'|tr -d ' ')|tr ' ' '\n'|awk '$1!~/^0{2,}$/&&!a[$1]++'|awk '{print (NR-1),$1}' | head -20
0 0
1 1
2 01
3 10
4 11
5 001
6 010
7 011
8 100
9 101
10 110
11 111
12 0001
13 0010
14 0011
15 0100
16 0101
17 0110
18 0111
19 1000
次に、Excelの列名と数字の対応一覧。
eval echo $(echo '{,{a..z}}'{,} '{a..z}'|tr -d ' ')|xargs -n1|awk '!a[$1]++'
test@ubuntu:~$ eval echo $(echo '{,{a..z}}'{,} '{a..z}'|tr -d ' ')|xargs -n1|awk '!a[$1]++' | cat -n | head -30
1 a
2 b
3 c
4 d
5 e
6 f
7 g
8 h
9 i
10 j
11 k
12 l
13 m
14 n
15 o
16 p
17 q
18 r
19 s
20 t
21 u
22 v
23 w
24 x
25 y
26 z
27 aa
28 ab
29 ac
30 ad
役に立つ時が来るのか?という気がしなくもないが、とりあえずこんな感じでやればExcelのネーミングルールでの列名を一覧にして出力できる。