|
何をもってして一般的というかによりますが・・・ ハードウェアでは、例えばverilogのバス表記の例にとると、 [15:0] > [0:15] >>> [1:16]という頻度で見かけます。 僕の知っている限りの物理層では、[0]が時間軸で最初に 送受信されるので、[0:15]という表記が現れます。 とはいえ、中身を解釈する際に、[15:0]のように置き換え ないと、人間には理解し難い事が多々あり、そのような処理 は僕はよくします。 |
|
awkの使い方について教えて下さい。 awkを使用して、以下の出力を、数字は、3桁毎にカンマで区切り、 出力位置を揃えて出力したいのですが、 180 file1.txt 1821 file2.txt 113457 fil3.txt を 180 file1.txt 1,821 file2.txt 113,457 file3.txt と出力したいのですが、 数字の部分を揃えることができません。 そのため、たの部分もそろいません。 どうすれば上手くできますか。 ------------------------------- #!/bin/sh # cat list.txt | sort -n -r | awk ' function put_comm(val) { if (val < 1000) { printf("%d",val) ; } else { put_comm(val / 1000) ; printf(",%03d",val % 1000) ; } } { if ($1 < 1000) { printf("%d",$1) ; } else { val=$1 ; put_comm(val) ; } } { #printf "\n" printf(" %s\n",$2) }' |
|
いつも参考にさせていただいてます dtterm上で動作するC言語のプログラムを作成しています そのプログラムで、cursesのwaddchとwrefreshを使用して1画面分の描画を1文字ずつ行っているのですが、 その際にカーソル表示がされているため、ちらついてしまいます カーソルを一時的に消す方法は無いでしょうか? ちなみに、waddchで画面編集後、最後にwrefreshを1回呼ぶ方法ですと、 一気に1画面分を表示できるのですが、編集時間が長く感じられるため、 1文字ずつパラパラと表示したいと考えています。 |
|
>>3482 米 桁数の上限がわからないと駄目ですが こんなのでどうでしょ?(下では8桁まで) ------ $ cat list 123 file1.txt 123456 file2.txt 1234567 file3.txt $ cat test.awk #!/bin/nawk -f { i = sprintf("%d",length($1) / 3) ; j = sprintf("%d",length($1) % 3) ; if ( i > 1 ) { if ( j == 0 ) j = 3 ; str_buf = sprintf("%s",substr($1,0,j)) ; for ( k=0 ; k<i ; k++ ) { cut_str = substr($1,j+(k*3)+1,3) ; if ( cut_str == "" ) break ; str_buf = sprintf("%s,%s",str_buf,cut_str) ; cut_str = "" ; } } else { str_buf = $1 ; } printf("%10s %s\n",str_buf,$2) ; } $ ./test.awk list 123 file1.txt 123,456 file2.txt 1,234,567 file3.txt |
|
>>3481 へにか > 僕の知っている限りの物理層では、[0]が時間軸で最初に > 送受信されるので、[0:15]という表記が現れます。 なるほど。ネットワークプログラミングでは当然ネットワーク バイトオーダで MSB が先になるわけなので、 [0:15] か [1:16] のどちらかで決まりですね。 個人的には「プログラマたるもの数えるときは 0 から」という ことで、そのうち [0:15] に修正しておこうと思います。 >>3483 tonpei curses はよくわかってませんが、curs_set(0) ですかね。 capability 的には cursor_invisible (vi) っぽいです。 ただ、端末エミュレータにカーソルを消す機能があるかという 問題があるかもしれません。うちの FreeBSD の /etc/termcap に xterm-basic|xterm common (XFree86):...:vi=\E[?25l:... とあったので xterm で % printf "\033[?25l" とするとカーソルが消えましたが、kterm-6.2.0_5 では消えません でした。kterm にカーソルを消す機能がないような感じがします。 でもまぁ dtterm なら多分大丈夫だとは思います。 |
|
>>3484 zsh 環境も書かずに質問して申し訳ありません。 HP-UX11.00です。 nawkが入っていないので、awkに変えて実行しました。 一応、上手く動きました。 cat list.txt $1 | sort -n -r | awk ' { i = sprintf("%d",length($1) / 3) ; j = sprintf("%d",length($1) % 3) ; if ( i > 1 ) { if ( j == 0 ) j = 3 ; str_buf = sprintf("%s",substr($1,0,j)) ; for ( k=0 ; k<i ; k++ ) { cut_str = substr($1,j+(k*3)+1,3) ; if ( cut_str == "" ) break ; str_buf = sprintf("%s,%s",str_buf,cut_str) ; cut_str = "" ; } } else { str_buf = $1 ; } printf("%10s %s\n",str_buf,$2) ; }' |