68user's page 掲示板

Prev< No. 4977〜4999> Next  [最新発言に戻る] [過去ログ一覧]
No. 4977 # べた 2009/03/22 (日) 23:25:34
>>4976 68user

ありがとうございます。
また、返事が遅くなって申し訳ありません。

> find . -newer foo
ですか。
シェルで、findの結果を取得することも考えました。

> あたりかと思いますが、いずれも前日9時と比較する部分は手で書かないと
> いけないように見えますので、イマイチですね。
Perlを使おうとしていたので、手で書かなくてはいけないと思っていました
この部分の良い方法が実現できなくて。

環境上、教えて頂いたモジュールも入れることができません。

No. 4978 # 68user 2009/03/23 (月) 22:00:19
>>4977 べた
find . -newer foo の方法を書いておきます。find を使わないなら、
昨日9時の日時 (20090323090000) を Time::Local で epoch time に
直しておき、stat() が返す最終更新時刻と比較すればよいでしょう。

------
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time()-60*60*24);
my $timestamp = sprintf("%04d%02d%02d%02d%02d.%02d", $year+1900, $mon+1, $mday, 9, 0, 0);
my $yeasterday_9am_file = "foo.txt";
system("touch -t $timestamp $yeasterday_9am_file");
open(IN, "find . -type f -newer $yeasterday_9am_file |");
while (<IN>){
        chomp;
        print "$_\n";
}

No. 4979 # べた 2009/03/24 (火) 21:19:39
>> 4978

ありがとうございます。

教えていただいた方法ですと、前日9時のタイムスタンプの
取得をPerlでやればあとは、シェルスクリプトでもできます
ね。

実のところ、findを使わない、Perlでの記述、遣り方を教えて
ほしいのですが。

No. 4980 # べた 2009/03/25 (水) 09:16:00
>>4978 68user

> find を使わないなら、
> 昨日9時の日時 (20090323090000) を Time::Local で epoch time に
> 直しておき、stat() が返す最終更新時刻と比較すればよいでしょう。

Time::Local で epoch time に直しての「epoch time」とは
なんでしょうか。

No. 4982 # ちびヴァル [URL] [E-mail] 2009/04/05 (日) 23:19:53
linuxのCでグラフィックの勉強がしたくてX-Windowまで辿り着いたのはよかったんですが、
ここ↓のソースを実行させようとしても何故かエラーが出てしまいます。
http://x68000.q-e-d.net/~68user/xprogram/xlib-4.html

一応類似の記事がないかどうか調べて見ましたが、
No.8552が近いと思いましたが全然分かりませんでした。
ちゃんとusr/include/X11ファイルに
Xlib.hとXutil.hはありますし、
コンパイルオプションも活用してみました……
Xlib.hとXutil.hの意味も分からなくて困窮中です……

コマンドラインは、gcc -o xlib-4-1 xlib-4-1.c -I /usr/include/X11 -L /usr/include/X11
エラーは以下の文です
/tmp/cc2pF4g1.o: In function `main':
xlib-4-1.c:(.text+0x9f): undefined reference to `XOpenDisplay'
xlib-4-1.c:(.text+0x149): undefined reference to `XCreateSimpleWindow'
xlib-4-1.c:(.text+0x198): undefined reference to `XSetStandardProperties'
xlib-4-1.c:(.text+0x1c0): undefined reference to `XCreateGC'
xlib-4-1.c:(.text+0x1e8): undefined reference to `XSetBackground'
xlib-4-1.c:(.text+0x20a): undefined reference to `XSetForeground'
xlib-4-1.c:(.text+0x232): undefined reference to `XCreateGC'
xlib-4-1.c:(.text+0x25a): undefined reference to `XSetBackground'
xlib-4-1.c:(.text+0x27c): undefined reference to `XSetForeground'
xlib-4-1.c:(.text+0x294): undefined reference to `XMapRaised'
xlib-4-1.c:(.text+0x2ec): undefined reference to `XFillArc'
xlib-4-1.c:(.text+0x344): undefined reference to `XFillArc'
xlib-4-1.c:(.text+0x352): undefined reference to `XFlush'
collect2: ld はステータス 1 で終了しました

No. 4983 # 68user 2009/04/06 (月) 11:36:31
>>4982 ちびヴァル
オプション -lX11 が足りていません。まずは
    http://x68000.q-e-d.net/~68user/xprogram/xlib-1.html
からどうぞ。

No. 4984 # 68user 2009/04/06 (月) 11:37:59
>>4980 べた
> 「epoch time」とはなんでしょうか。
http://oku.edu.mie-u.ac.jp/~okumura/php/date.php
    UNIX で Epoch とは,協定世界時(UTC,いわゆるグリニッジ標準時 GMT)
    1970 年元旦 0 時 0 分のことです。 UNIX の内部ではこの瞬間からの秒数で
    時刻を表しています。
のことです。

No. 4985 # ちびヴァル [URL] [E-mail] 2009/04/06 (月) 14:46:01
>>4983 68user

一通り実行して終了させると次の文章が出るんですが……
XIO: fatal IO error 11 (Resource temporarily unavailable) on X server ":0.0"
            after 16 requests (14 known processed) with 0 events remaining.

自分で調べて、etc/X11/xorg.confというファイルにが重要であると
わかったので、xorg.confに
Section "ServerFlags" Option "AllowEmptyInput" "off" EndSectionを
追加しようとしていますが、普通のテキストエディタでは
「そのファイルを保存するために必要な権限がありません。入力した場所が正しいか確認して、もう一度実行してみて下さい。」
と出て保存出来ないのですが、どうすればいいでしょうか?
また、コマンドプロンプトでも試して見ましたが、
E325: ATTENTION
Found a swap file by the name "/etc/X11/.xorg.conf.swp"
                    owned by: root dated: Mon Apr 6 14:37:03 2009
                  file name: /etc/X11/xorg.conf
                    modified: YES
                  user name: root host name: mikan
                process ID: 8021
While opening file "/etc/X11/xorg.conf"
                          dated: Thu Mar 5 23:15:04 2009

(1) Another program may be editing the same file.
        If this is the case, be careful not to end up with two
        different instances of the same file when making changes.
        Quit, or continue with caution.

(2) An edit session for this file crashed.
        If this is the case, use ":recover" or "vim -r /etc/X11/xorg.conf"
        to recover the changes (see ":help recovery").
        If you did this already, delete the swap file "/etc/X11/.xorg.conf.swp"
        to avoid this message.
"/etc/X11/xorg.conf" 33 lines, 1037 characters
と出てどうすればいいか迷っています

No. 4986 # 68user 2009/04/07 (火) 23:39:02
>>4985 ちびヴァル
> Found a swap file by the name "/etc/X11/.xorg.conf.swp"
vim が作成したスワップファイルでしょうから、.xorg.conf.swp を
削除して、root 権限で xorg.conf を更新すればよいと思います。

No. 4988 # べた 2009/04/11 (土) 14:29:40
>> 4978

> find . -newer foo の方法を書いておきます。find を使わないなら、
> 昨日9時の日時 (20090323090000) を Time::Local で epoch time に
> 直しておき、stat() が返す最終更新時刻と比較すればよいでしょう

の方法を教えて欲しいのですが。

No. 4989 # べた 2009/04/21 (火) 20:16:51
Bシェルで、sedを使って、フルパスからディレクトリとファイル名を
分割したいのですが良い方法を教えてください。

ファイル名を取り出すことは出来たのですが、パス名を取り出すこと
ができません。
また、ルート直下「/txt.csv」のような場合だと、ファイル名が取り出せ
ません。結果が、「/txt.csv」となってしまいます。「txt.csv」と
したいのです。


------------------------------------
FILE=/aaa/bbb/txt.csv
echo ${FILE} | sed 's/\/.*\///g'

FILE=/txt.csv
echo ${FILE} | sed 's/\/.*\///g'

FILE=txt.csv
echo ${FILE} | sed 's/\/.*\///g'


環境は、
    Solaris8
    Bシェル

No. 4990 # 68user 2009/04/22 (水) 03:06:48
>>4989 べた
basename・dirname コマンドを使うのはダメですかね。

No. 4991 # べた 2009/04/22 (水) 08:52:24
>>4990 68user

>basename・dirname コマンドを使うのはダメですかね。
も考えましたが、
出来れば、使わない方法でと

No. 4992 # zsh 2009/04/22 (水) 11:56:48
>>4991 べた
普通に考えると、それ専用のコマンドがあるんだからそれを使うべき。

sed でやりたいならこんな感じかなぁ?
- ファイル名
echo ${FILE} | sed 's/.*\///g'
- パス名
echo ${FILE} | sed 's/\(.*\/\)[\/]*/\1/g'

No. 4993 # べた 2009/04/22 (水) 12:12:04
>>4992 zsh

> 普通に考えると、それ専用のコマンドがあるんだからそれを使うべき。
すみません。

> - パス名
> echo ${FILE} | sed 's/\(.*\/\)[\/]*/\1/g'
が、上手くいきませんでした。
パス名がとれません。フルパスが返ってきます。

/aaa/bbb/txt.csv → /aaa/bbb/txt.csv
/txt.csv → /txt.csv

No. 4994 # べた 2009/04/22 (水) 12:15:00
>>4992 zsh

> 普通に考えると、それ専用のコマンドがあるんだからそれを使うべき。
すみません。

> - パス名
> echo ${FILE} | sed 's/\(.*\/\)[\/]*/\1/g'
が、上手くいきませんでした。
パス名がとれません。フルパスが返ってきます。
それと、ファイル名のみ場合は、値がなしとしたいのですが。

/aaa/bbb/txt.csv → /aaa/bbb/txt.csv
/txt.csv → /txt.csv

No. 4996 # zsh 2009/04/22 (水) 17:14:30
>>4994 べた
失礼しました。↓でどうでしょうか?

echo ${FILE} | sed -n -e 's#\(.*\)/[^/]*#\1#p'

No. 4997 # べた 2009/04/22 (水) 19:10:04
>>4996 zsh
ありがとうございます。
パス名を取り出すことができました。
ただ、以下の様に場合、上手くいきません。

「FILE=/txt.csv」の場合
    「/」となりません。
    ブランクというか、改行します。
    「/」だけ取り出すというのは無理なのでしょうか。

「FILE=txt.csv」の場合
    ブランクとなります。
    正しい動きなのでしょうか。

No. 4998 # ふくし 2009/04/22 (水) 22:39:27
nawkのユーザ定義関数について教えて下さい。

nawkで、ユーザ定義関数を呼び出して編集を行っているのですが、
ユーザ定義関数内で編集した値を、パラメータで渡した変数に設定
して返却したいのでが値が返却されません。
ユーザ定義関数内では、渡した変数に値が設定されているのですが、
関数を抜けると値が設定されていません。
どうしてなのでしょうか。
それとも、無理なのでしょうか。
パラメータで渡した変数に設定して返すことができるのでしょうか。

環境
    OS:Solairs8
    シェル:Bシェル(sh)

--------------------------------------------------------------
nawk -v OUT=${OutFile} -F"," '
        BEGIN {
                count = 0+0;
        }
        function chk2(arg1,arg2,val) {
                sub(/^"*/,"",arg1); sub(/"*$/,"",arg1);
                sub(/^"*/,"",arg2); sub(/"*$/,"",arg2);
                val=sprintf("%s %s",arg1,arg2);
        }
        function chk1(arg1,val) {
                sub(/^"*/,"",arg1); sub(/"*$/,"",arg1); val=arg1;
        }
        {
                chk1($1,UserID);
                chk2($8,$9,Name);

                printf("%s,%s\n",UserID,Name);
                #printf("%s,%s\n",UserID,Name) >> OUT;
                count++;
        }
        END {
                printf("Output number : %d\n",count);
}' ${FILE}

No. 4999 # zsh 2009/04/23 (木) 11:23:01
>>4997 べた
> 「FILE=/txt.csv」の場合
パス名末尾の / を出力しないようにしていたためですね。

echo ${FILE} | sed -n -e 's#\(.*/\)[^/]*#\1#p'

こうすれば出力されると思いますが、
逆に /hoge/fuga.txt のような場合でも /hoge/ となります。

> 「FILE=txt.csv」の場合
パスが指定されていないので、ブランクで正しいと思っていますが。
(そういった条件もありませんでしたし。)

>>4998 ふくし
nawk は参照渡しできないはずなので、そういう書き方ではできません。
ただ nawk では、ユーザ関数の引数として定義された変数を除き、
すべてグローバル変数だと思うので、やろうとしていることはできます。

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