bashで2進数やExcel列の数字の対応一覧を生成する

ふと、コンソール上で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
Sponsored Links

次に、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のネーミングルールでの列名を一覧にして出力できる。

 


Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。

*