2011/12/14

shellで連番の欠番を探す(awk)

欠番に耳あてしてみる。
$ i=10 && while [ $i -ne 0 ] ; do ; od -vAn -N1 -tu4 < /dev/random ; i=`expr $i - 1` ; done | tr -d ' ' | sort -n | uniq > ~/temp/randnums.txt
$ cat ~/temp/randnums.txt
1
13
62
64
114
137
210
240
253
$ cat ~/temp/randnums.txt | awk BEGIN{'FS=","}{print $1}' | awk 'BEGIN{pre=0;}{if(pre+1<$1){for(i=pre+1;i<$1;i++){print "*"i"*"}}{print $1}pre=$1;}'  | head
1
*2*
*3*
*4*
*5*
*6*
*7*
*8*
*9*
*10*
*11*
*12*
13
*14*
*15*
*16*
*17*
*18*
*19*
*20*
取りあえずコマンドにしてみる。
$ cat ~/temp/randnums.txt | toothless | head -n 15
2
3
4
5
6
7
8
9
10
11
12
14
15
16
17
ソースはこちら
そういえば以前同じようなことした。

おまけ

基本的にこのページは全て awk で記述していく。
awk/sedいいですよねー面白いですよねー。もっとちゃんとやってみたい。

入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界

0 件のコメント:

コメントを投稿