68user's page 掲示板

Prev< No. 3484〜3492> Next  [最新発言に戻る] [過去ログ一覧]
No. 3484 # zsh 2003/12/24 (水) 18:16:33
>>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

No. 3485 # 68user 2003/12/24 (水) 19:01:30
>>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 なら多分大丈夫だとは思います。

No. 3486 # 2003/12/25 (木) 09:56:04
>>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) ;
}'

No. 3487 # 2003/12/25 (木) 10:09:10
>>3486
以下の様に、数字が5桁、4桁は正しくでませんでした。

123 file1.txt
1234 file2.txt
12345 file3.txt
123456 file4.txt
1234567 file5.txt

No. 3488 # 2003/12/25 (木) 11:10:38
>>3487
    if ( i > 1 ) {

    if ( i >= 1 ) {
です。

No. 3489 # zsh 2003/12/25 (木) 13:02:59
>>3488
すみません、その部分のif文自体不要でした。
(不要になるように修正してたのを忘れてました。)
-----
$ cat list
1 file1.txt
12 file1.txt
123 file1.txt
1234 file2.txt
12345 file3.txt
123456 file4.txt
1234567 file5.txt
$ cat test.sh
#!/bin/sh

sort -n -r $1 | awk '{
                i = sprintf("%d",length($1) / 3) ;
                j = sprintf("%d",length($1) % 3) ;
                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 = "" ;
                }
                printf("%10s %s\n",str_buf,$2) ;
}'

$ sh test.sh list
  1,234,567 file5.txt
      123,456 file4.txt
        12,345 file3.txt
          1,234 file2.txt
              123 file1.txt
                12 file1.txt
                  1 file1.txt

No. 3490 # tonpei 2003/12/25 (木) 16:41:01
68Userさん、回答ありがとうございました

またまた質問がありますので、どなたか回答よろしくお願いします

環境:HP-UX Ver.11.0

1.XWindowのログイン後、言語選択の画面が表示されますが、この画面を出さずに、デフォルトで
    ATOKを選ぶ方法は?
2.XWindowの起動後、ウインドウ内に、ツールバー(端末起動、エディタ起動などのボタン郡)が
    表示されますが、これを非表示(アイコンも無くす)にする方法は?

以上、2件についてご存知でしたら、回答お願いします

No. 3491 # みの 2003/12/26 (金) 02:16:59
HP-UXですが、シェルについて教えて下さい。
printfを使用して書式で、変数の中身を出力しているのですが
上手くできません。

-----------------
#!/bin/sh
name1="yamada"
name2="taro"

printf "%s %s --> %s\n",${name1} ${name2} NG

exit 0
------------

とすると

yamada NG -->
,taro

となってしまいます。

No. 3492 # 68user 2003/12/26 (金) 02:27:02
>>3490 tonpei
http://x68000.startshop.co.jp/~68user/cgi-bin/wwwboard.cgi?howtouse
      「回答をもらったら結果を報告する」
をよく読んでください。なお、>>3490 の質問については
わかりません。

>>3491 みの
> printf "%s %s --> %s\n",${name1} ${name2} NG
カンマが余分だと思います。
    printf "%s %s --> %s\n" ${name1} ${name2} NG

> yamada NG -->
> ,taro
> となってしまいます。
本当ですか?
    taro NG -->
    ,yamada
になりませんか?

Prev< No. 3484〜3492> Next  [最新発言に戻る] [過去ログ一覧]