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

ふと、コンソール上で2進数とかExcelの列の10進数対応一覧みたいなのを一発で出力できないかなと思ったので、やってみることにした。2進数については、bcコマンドを使うかどうかで結構変わってくる。bcコマンドを使わない場合だと、ブレース展開を使用するので明示的に数字を指定するのが難しいようだ。

seq -f "obase=2;%g" 0 255|bc|awk '{print (NR-1),}'
eval echo $(echo '{,{0..1}}'{,,,,} '{0..1}'|tr -d ' ')|tr ' ' '\n'|awk '!~/^0{2,}$/&&!a[]++'|awk '{print (NR-1),}'
test@ubuntu:~$ seq -f "obase=2;%g" 0 255|bc|awk '{print (NR-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 '!~/^0{2,}$/&&!a[]++'|awk '{print (NR-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[]++'
test@ubuntu:~$ eval echo $(echo '{,{a..z}}'{,} '{a..z}'|tr -d ' ')|xargs -n1|awk '!a[]++' | 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

インフラエンジニア(…のつもり)。 仕事で使うならクライアントはWindowsよりはUNIXの方が好き。 大体いつも眠い。

Leave a Comment

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

*