• ベストアンサー

psの結果のTIME(hh:mm:ss形式)を秒数表示に変換したい

HP-UXのbshでスクリプトを書いています。 psコマンドの結果のTIME(hh:mm:ss)をperl関数等で秒数表示に変換する方法か、 psのオプションでTIMEを秒数で表示させる方法を教えて下さい。 time=$(ps | awk '{print $3}') hour=$(echo $time | awk F=":"'{print $1}') minute=$(echo $time | awk F=":"'{print $2}') second=$(echo $time | awk F=":"'{print $3}') second=`expr hour * 3600 + minute * 60 + second` とやるのは面倒なんで1行でやりたいのです。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

ps | perl -ne 'print $1*3600+$2*60+$3 . "\n" if /(\d\d):(\d\d):(\d\d)/' とか

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4846/10257)
回答No.2

awk でも、 second=$(ps | awk '{split($3,t,/:/);print t[1]*3600+t[2]*60+t[3]}')

参考URL:
http://docs.hp.com/ja/B2355-60104-01/awk.1.html

関連するQ&A

  • psの結果のTIME(hh:mm:ss形式)を秒数表示に変換したい

    psの結果のTIME(hh:mm:ss)を、perl関数等で秒数表示に変換する方法を教えて下さい。 perlじゃなくてawkやsedなんかでできるんならそれでも構いません。 別言語の関数を使わずともpsのオプションでTIMEを秒数で表示させる事ができるならそれでも構いません。 使うシェルはHP-UXのbshです。

    • ベストアンサー
    • Perl
  • あともうちょっで完成なのですが・・・

    うまく動作しないのですが、以下のプログラムのどこが間違っているのでしょうか? たぶん、メイン関数の宣言の部分だと思うのですが・・・。 #include<stdio.h> typedef struct Time{ int hour; int second; int minute; }Time; int main(void){ Time time1,time2,time3; Time time[3]; int i; for(i=0;i<3;i++){ printf("time%dの時間を入力\n",i+1);   scanf("%d",time[i].hour); printf("time%dの分を入力\n",i+1)   scanf("%d",time[i].minute); printf("time%dの秒を入力\n",i+1); scanf("%d",time[i].second); } time3.second = time1.second + time2.second; if( time3.second >= 60 ){ time3.second=-60; /* time3.second = time3.second - 60; */ time3.minute=1; }else{ time3.minute=0; } time3.minute = time3.minute + time1.minute + time2.minute; if( time3.minute >= 60 ){ time3.minute=-60; /* time3.minute = time3.minute - 60; */ time3.hour=1; }else{ time3.hour=0; } time3.hour= time3.hour+ time1.hour+ time2.hour; return 0; }

  • ファイルの差分検出シェル教えてください(bsh)

    ファイル1(f1)とファイル2(f2)で値が一致しないときのみ その行番号を得る方法を教えてください。 2つのファイルの行数は同じです。 例) f1の中身 100 101 902 103 104 f2の中身 100 101 102 103 104 以上の2つのファイルより3行目が不一致のため "3"を得たいです。 ちなみに私が安易に考えたものを記します。 sdiff f1 f2 | grep -n "|" | awk '{print $1}' これでは、"|"のときしか成功しません。(当たり前ですが) 環境はHP-UXでbshです。 awkは基本的なことしか知りません。 詳しいかたよろしくお願いいたします。

  • String型のデータを組み合わせ

    data[][] はString型の2次元配列です。 cs_hour,cs_minute,cs_secondもすべてString型です。 例えば cs_hour = 1 cs_minute = 2 cs_second = 3 の場合 data[a][1]= cs_hour + ";" + cs_minute + ":" + cs_second; とすると 1:2:3 と表示されると思ったのに 1 としか表示されません。 うまく組み合わせる方法があれば教えていただけないでしょうか? 初歩的な質問ですいません・・

  • シェルスクリプトの演算について

    下記のような内容で、list変数の値から抽出してtest{i}変数に入れるようにしています。 ※awkコマンドでのprintの値を for の値にしています。 for i in 0 1 2 do test${i}=`echo ${list} | awk '{ print $'${i}' }'` done この例はうまくいくのですが、 print $'${i}'の部分で${i}の値にプラス2したものを利用したく、 test${i}=`echo ${list} | awk '{ print $'${i+2}' }'` や test${i}=`echo ${list} | awk '{ print $i=`expr ${i} + 2` }'` 等を試しましたがうまくいきません。 どのようにすればよいでしょうか。 よろしくお願い致します。

  • 秒数(Long)→HH:mm:ssへの変換(99:59:59)

    Long型の秒数をHH:mm:ss形式に変換したいのですが、 Calenderクラスを利用した場合、最大23:59:59までは変換できたのですが、それを超える秒数を変換したい場合どのような方法があるのでしょうか? 秒数が359999の場合、99:59:59に変換したいのですが、 Calenderクラスを利用すると03:59:59となってしまいます。 ご教授お願いいたします。

  • 時計が表示できません

    ASP.NET C# でHTMLとJavascriotを使用しWeb画面を作成しているのですが、そこに表示するリアルタイムで動く時計が上手く表示できません。<head runat="server">~</head>にて以下のプログラムを埋め込むと動かす事はできます。 <SCRIPT type="text/javascript"> <!-- function Watch() { now = new Date(); year = now.getYear(); month = now.getMonth()+1; day = now.getDate(); hour = now.getHours(); minute = now.getMinutes(); second = now.getSeconds(); if (year < 1000) { year += 1900 } if (hour < 10) { hour = '0' + hour } if (minute < 10) { minute = '0' + minute } if (second < 10) { second = '0' + second } document.form.watch.value = year+'年' + month + '月' + day   + '日 '+ hour + ':' + minute + ':' + second; setTimeout("Watch()",1000); } document.write('<FORM name=form><name=form><INPUTname=watchsize=27></FORM>'); Watch(); //--> (注:上記プログラムはあるサイトのコピーとなります) ですが、<body>~</body>内の自分が表示させたい位置に埋め込むと、 表示できません。 大変申し訳ないのですが、 わかる方どなたか教えていただけないでしょうか?

  • PHPでPCのローカル時刻は取得出来ますでしょうか?

    PHPでPCのローカル時刻は取得出来ますでしょうか? 現在、javascriptで取得しているのですが、これを PHPの変数として取得出来ないか考えております。 javascriptでは下記のように取得して表示させています。 <script type="text/javascript"> var nowtime = new Date(); var hour = nowtime.getHours(); var minute = nowtime.getMinutes(); var second = nowtime.getSeconds(); if(hour < 10) { hour = "0" + hour; } if(minute < 10) { minute = "0" + minute; } if(second < 10) { second = "0" + second; } document.write(hour,minute,second); </script> 例えば現在が12時34分56秒だとしたら、javascriptで 「123456」という6ケタの数字を取得出来ます。 この「123456」を、PHPの変数として使いたいです。 ($jikoku = 123456) どなたかお知恵を拝借出来ませんでしょうか? 何卒宜しくお願い致します。

    • ベストアンサー
    • PHP
  • お世話になります。

    お世話になります。 timeは不可算名詞、hour、minute、secondは可算名詞となります。どうもすっきり理解することができません。 暗記するしかないのでしょうか。お手数ですが教えてください。

  • バッチファイルのループ処理

    ffmpegを使いflvファイルからループを使いの画像を取得したいと考えております。 以下のバッチファイルを使用して起動して、5秒おきにループは10回回り、画像が10個出力されるはずですが、1枚しかできません。 --------------------- set fname=time:/=% set hour=%time:~0,2% set minute=%time:~3,2% set second=%time:~6,2% FOR /L %%i IN (1,1,10) DO ( ffmpeg -i yakei.flv -ss 1 -vframes 1 -f image2 %hour%時%minute%分%second%秒.jpg ping localhost -n 5 > null ) --------------------- どうしたら画像10個出力されますでしょうか? ご教授宜しくお願いします。

専門家に質問してみよう