• ベストアンサー

awkによる日付編集

vmstatをファイルへ出力する時に、1行毎に日時を編集したいのですがうまく出来ません。AIXですと下記のスクリプトでうまくいっているのですがsoralisではどのようにしたらよいでしょうか。 vmstat $1 $2 | awk '!/kthr|---|avm/ {printf("%s | ", $0);system("date")}' >> $LOGDIR$DATE

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

  • ベストアンサー
  • usleep
  • ベストアンサー率83% (5/6)
回答No.2

awkをnawkまたは/usr/xpg4/bin/awk に変えると吉です。 ※理由についてはSolaris awkあたりのmanで確認してみてください。

yukilion
質問者

お礼

nawkでできました。ありがとうございました。

その他の回答 (1)

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

awk使わなくても、shellスクリプトでだけでいけるのでは。 vmstat $1 $2|while read s;do echo $s"|"`date`; done

yukilion
質問者

お礼

nawkで解決しましたが、この方法も試してみたいと思います。ありがとうございました。

関連するQ&A

  • awk詳しい方へ

    あるファイルの最終行のみ、他の行と出力形式を変えたいのですが awkとNRを使ってスマートにできないでしょうか? 詳しい方ご教授お願いします。 不細工に作ると(ファイル名xxxのとき) nnn=`wc -l xxx | awk '{print $1}'` awk '{ if (NR != $nnn) printf("%s %s \n",$1,$2) else printf("%s %s \n",$3,$4) }' aaa こんな感じでしょうか。 なんか、一行とかでかけないでしょうか?

  • UNIX awkコマンド

    シェルスクリプトで、awkをつかって計算を行いたいのですが、 例えば、 file1 5040 というものが入っていたとして、 1列目の5と3列目の4を抽出して 5-4をさせて、 新しいファイルに、1という結果を保存したい場合、 どのようにしたらよいのでしょうか?? awk '{printf("%s\n",substr(0,1-3,1))} file1 > newfile でできると思ったのですができませんでした。 わかる方いましたら教えてください。

  • awkのBEGINについて

    awkのBIGIN内で、データファイルの途中のレコード情報を取得することは可能でしょうか? 以下が行いたい詳細です。 下記例のテキストファイルの”DATE”行をawkスクリプトファイルのBEGIN内で取得したい。 例:test.txt 11111 22222 33333 DATE=20040706 44444 よろしくお願いいたします。

  • awkについての質問

    実行環境:AIX5.2 シェル:Ksh 以下の2点をシェル内部で実行しているのですが、上手くいきません。 ご教授お願いいたします。 (1)System関数の実行結果(標準出力)をTERM上に表示させず、処理をしたい。 #!/usr/bin/ksh awk '{ system("ls -l") ###具体的にはls -l 結果の2行目、第一フィールドをawk内で変数に格納 }' (2)変数に格納された文字列のバイト数を取得し、変数に格納したい。 length()は文字数を取得できる事は理解したのですが、文字数ではなく、文字列のバイト数を取得したいです。awkに実装されている関数などありますでしょうか?

  • awkスクリプトでダブルクォーテーションの削除

    作成しているawkスクリプトを実行すると ”aaa" "1111" "kkk" ”bbb" "2222" "jjj" という出力になってしまいます。 ダルルクォーテーションを削除したかったので printf(”%s %s %s\n"、 adata、 bdata、 cdata)        ↓ adataprint =gsub(”¥””、” ”、adata) bdataprint =gsub(”¥””、” ”、bdata) cdataprint =gsub(”¥””、” ”、cdata) printf(”%s %s %s\n"、 adataprint、 bdataprint、 cdataprint) としてみたのですが思ったような出力 aaa 1111 kkk bbb 2222 jjj にはなってくれません。 こういった処理はどのようにすればいいのか誰か教えていただけないでしょうか?

  • awkでファイルから読み込んだ値を、演算させるにはどうしたら良いですか

    awkでファイルから読み込んだ値を、演算させるにはどうしたら良いですか。 ファイル(hoge.txt)の内容は、次の通り(全4行) 123 456 50 20 これを、bashスクリプトで計算させます。 FF=`cat hoge.txt | awk 'BEGIN {x=$2;printf ("%s, %s", (148+x*0.05), x);}'` echo "答え = ${FF}" このときの$2の値は、50です。但し、文字列として扱われているようです。 xの値を、数値として代入され、四則演算をさせるにはどうしたら良いですか? 以上、よろしくお願いします。

  • awk内でsystem関数を使用しfunction

    環境:AIX5.2 シェル:ksh を使用してシェルを作成しています。 awk内でsystem関数を使用しfunctionを呼び出す事は可能でしょうか? 実現したい内容は以下です。 ・awk内で同一シェルに記述されたfunctionを呼び出す ・functionを呼び出す際には引数を渡す 記述イメージ的に以下のような感じでスクリプトに記述していますが、 system関数内で呼び出そうとしているfunctionをfunctionとして 認識できないのでは??っという疑問を持ち始めてます。 function hoge{  HOGE=$1 echo ${HOGE} } awk'{ BEGIN{FS=":"} system(hoge AAA) }'

  • AWKスクリプトのエラーびついて

    AWKアスクリプトのエラーについて質問があります。 以下のようなAWKスクリプトでエラーがでます。 #!/bin/nawk -f BEGIN{ npl = 30; ppl = 200; pd = 110; nd = 46; m1 =0.074;   } { 処理 } エラーメッセージ /bin/nawk: syntax error 7 行目 コンテキスト m1 >>> =0.074; <<< なんで,こんなところでエラーが出力されるのかよくわかりません。 どなたか教えていただけないでしょうか?

  • awkで複数ファイルのある列を抽出し出力したい

    awkプログラミングの初心者です。 今、複数ファイル(1000ファイル)から、それぞれある列(すべて同じ列番号)のデータを抜き出して、1つのファイルに出力したいと考えています。 具体的には、1列目に共通項、2列目以降に1000ファイル分の抽出された列を、合計1001列となるような1つのファイルとして出力したいと考えております。 awkを使って出力するには、どのようなスクリプトを作ればよいか教えていただけませんでしょうか。 <イメージ> 元となるファイル(例えば下記のように3ファイル、実際には1000ファイル)があります。 file1.txt: 1  10 2  15 3  17 :  : 1000  25 file2.txt: 1  5 2  40 3  22 :  : 1000  17 file3.txt: 1  9 2  20 3  16 :  : 1000  32 出力後のファイルイメージ: 1  10  5  9 2  15  40  20 3  17  22  16 :  :  :  : 1000  25  17  32 ちなみに、自分で作成したawkスクリプト(下記)では、上記出力後のイメージとは異なり、 縦にデータが結合されてしまいました。 awk `{print $2}` ./file*.txt > Output.txt 出力後のファイル: 10 15 17 : 25 5 40 :

  • awkでの出力項目の追加方法について

    はじめまして。 急遽UNIXサーバをメンテすることになったUNIX素人です。時間に迫られており勉強する時間も今はとれず、皆様のお知恵をお借りしたく質問させていただきます。 現在、コマンド出力結果などの各行の先頭に、日時分秒を追加してテキストファイル出力するシェルスクリプトの作成をしています。 awk を使用して実現したいと思っていますが、具体的な方法についてアドバイスをいただけたらと思っています。 なお、コマンド出力結果をawkへ引き渡す方法は、スクリプト内で直接渡しても、一旦ファイル出力したものを読み込む形のどちらでもよいと思っています。 例 ・ps の出力結果 PID PPID PGID WINPID TTY UID STIME COMMAND 1072 1 1072 1072 con 1005 10:41:29 /usr/bin/bash 1052 1072 1052 544 con 1005 10:50:14 /usr/bin/ps ・日時分秒 を追加した結果 DATE PID PPID PGID WINPID TTY UID STIME COMMAND 200705111735 1072 1 1072 1072 con 1005 10:41:29 /usr/bin/bash 200705111735 1052 1072 1052 544 con 1005 10:50:14 /usr/bin/ps 大変初歩的な質問で申しわけありませんが、なにどぞご教授お願いします。